使用java检索带有id的XML元素



我有一个像这样从seedlist服务检索的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()方法检索这个

如果您想坚持使用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)

最新更新