具有更改名称空间的Java DOM XML解析器
我对Web服务进行REST调用,并始终接收XML作为响应。然后我解析XML并用这些信息填充Java对象。 问题在于元素标记可能具有不同的名称空间,如下所示:具有更改名称空间的Java DOM XML解析器,java,xml,dom,xml-namespaces,Java,Xml,Dom,Xml Namespaces,我对Web服务进行REST调用,并始终接收XML作为响应。然后我解析XML并用这些信息填充Java对象。 问题在于元素标记可能具有不同的名称空间,如下所示: <ns:title>....</ns:title> <ns2:feed xmlns="http://www.example.com/routing1/routing2" xmlns:ns2="http://www.w3.org/../Atom" xmlns:ns3="http://www.exa
<ns:title>....</ns:title>
<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">
二,
...
..
标题
...
....
您的title
元素在两个示例中具有相同的名称空间
在第一个示例中,您有:
xmlns:ns2="http://www.w3.org/../Atom"
xmlns="http://www.w3.org/../Atom"
及
及
它应该成功地选择
title
元素,即使前缀发生了变化。这些名称空间并不不同。这些是不同的前缀。名称空间URI实际上不同吗?是的,URI是不同的。您能给我们看一下xmlns:ns
和xmlns:ns2
的部分吗?我对ns URI进行了编辑,看起来您正在使用RSS提要。当前缀为ns
时,您的XML是否有xmlns:ns=”http://www.w3.org/../Atom“
或者它是一个完全不同的URL?我试过了,但返回的总是null。”。。如果我把“*”作为第一个参数,它会起作用……我很好奇为什么在Atom名称空间中有这两个点。Atom格式的标准名称空间是http://www.w3.org/2005/Atom
。您的XML真的有这两点吗,还是它有2005
?这是我的意图,我刚刚更改了uri,但与您所说的相同:http://www.w3.org/2005/Atom
<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>
<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>
xmlns:ns2="http://www.w3.org/../Atom"
<ns2:title>title</ns2:title>
xmlns="http://www.w3.org/../Atom"
<title>title<title>
element.getElementsByTagNameNS("http://www.w3.org/../Atom", "title")