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

具有更改名称空间的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

我对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.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")