[英]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.