【问题标题】:Retrieve XML element with id using java使用 java 检索具有 id 的 XML 元素
【发布时间】:2013-03-19 20:42:44
【问题描述】:

我有一个像这样从种子列表服务中检索到的 xml。

<atom:feed xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:wplc="http://www.ibm.com/wplc/atom/1.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <atom:link href="/wps/images/icons/scope_search_wcm.gif" rel="icon"/>
  <wplc:field id="name">Locations</wplc:field>
  <wplc:field id="contentSourceType">Seedlist</wplc:field>
  <wplc:field id="defaultcontext">/poc</wplc:field>
  <wplc:field id="effectivedate">1354640637000</wplc:field>
  <wplc:field id="modifier">uid=wpsadmin,o=defaultWIMFileBasedRealm</wplc:field>
  <wplc:field id="securecontext">/mypoc</wplc:field>
  <wplc:field id="search_controllable_uuid">f2bedbba-724e-420b-b066-5d0fef04c421</wplc:field>
  <wplc:field id="locale">en</wplc:field>

我要找回/mypoc

<wplc:field id="securecontext">/mypoc</wplc:field>

wplc 标签有共同的本地名称field 所以我无法检索这个。

我正在使用Abdera解析器来解析xml。

如果可能的话,我想使用QNameFeed.getSimpleExtension() 方法检索它

【问题讨论】:

    标签: java xml-parsing atom-feed qnames


    【解决方案1】:

    如果您想坚持使用 Abdera - 那是 Atom 特定的 - 我认为您无法通过一次调用获得该值:您需要在父级上使用 getFirstChild() 枚举所有 wplc:field 元素和然后getNextSibling(),并使用getAttributeValue()检查正确的id值。

    如果您使用通用 XML 解析器,您应该能够直接使用 XPath 获取该值,例如:

    /atom:feed/wplc:field[@id='securecontext']
    

    (为http://www.w3.org/2005/Atom 定义了前缀atom,为http://www.ibm.com/wplc/atom/1.0 定义了wplc

    【讨论】:

    • 嗨 MiMo 感谢您的回复-我尝试了这个XPathExpression xp = XPathFactory.newInstance().newXPath().compile("//atom/wplc[@id='securecontext']"); String href = xp.evaluate(doc);,我收到了这个错误Unsupported context item: org.apache.abdera.parser.stax.FOMDocument@6d4eed8
    猜你喜欢
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 2013-06-18
    • 2020-12-21
    • 1970-01-01
    相关资源
    最近更新 更多