繁体   English   中英

具有更改名称空间的Java DOM XML分析器

[英]Java DOM XML Parser with chaning namespaces

我对WebService进行REST调用,并始终接收XML作为响应。 然后,我解析该XML并用这些信息填充Java对象。 问题在于元素标签可能具有不同的名称空间,如下所示:

  <ns:title>....</ns:title>

要么

  <ns2:title>....<ns2:title>

要么

  <title>...<title>

编辑:和名称空间URI看起来像这样:

 <ns2:feed xmlns="http://www.example.com/routing1/routing2" 
 xmlns:ns2="http://www.w3.org/../Atom" 
 xmlns:ns3="http://www.example.com/routing1/routing2"
 xmlns:ns4="http://purl.org/routing1/routing2/1.0">

因此,因此我将方法element.getElementsByTagNameNS("specifiedNamespace", "title")更改为element.getElementsByTagNameNS("*", "title") 可以匹配所有名称空间吗,因为我也遇到了element-tag没有像第三个示例<title>..</title> ..那样的名称空间的情况。

是否有更好的程序来解决该问题? 还是可以像我一样解决它?

谢谢。

编辑:2响应示例

1。

<ns2:feed xmlns="http://www.example.com/routing1/routing2" xmlns:ns2="http://www.w3.org/../Atom" xmlns:ns3="http://www.example.com/routing1/routing2" xmlns:ns4="http://purl.org/routing1/routing2/1.0">
  ...
  <ns2:someTag1>..</ns2:someTag1>
  <ns2:title>title</ns2:title>
  <entry>...</entry>
  ....
</ns2:feed>

2

<ns2:feed xmlns="http://www.w3.org/../Atom" xmlns:ns2="http://www.example.com/routing1/routing2" xmlns:ns3="http://www.example.com/routing1/routing2" xmlns:ns4="http://purl.org/routing1/routing2/1.0">
  ...
  <someTag1>..<someTag1>
  <title>title<title>
  <ns2:entry>...</ns2:entry>
  ....
</ns2:feed>

两个示例中的title元素都具有相同的名称空间。

在第一个示例中,您具有:

 xmlns:ns2="http://www.w3.org/../Atom" 

 <ns2:title>title</ns2:title>

因此这意味着title位于http://www.w3.org/../Atom命名空间中。

在第二个示例中,您具有:

 xmlns="http://www.w3.org/../Atom"

 <title>title<title>

所以这里的title还是在http://www.w3.org/../Atom命名空间中。


前缀不同(第二个示例未使用title的前缀),但是名称空间相同。

这意味着您应该能够使用:

element.getElementsByTagNameNS("http://www.w3.org/../Atom", "title")

并且即使前缀更改,它也应成功选择title元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM