Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取DOM文档中的所有名称空间_Java_Xml_Dom - Fatal编程技术网

Java 读取DOM文档中的所有名称空间

Java 读取DOM文档中的所有名称空间,java,xml,dom,Java,Xml,Dom,我想读取DOM文档中的所有名称空间 我的输入XML文件是: <a:Sample xmlns:a="http://a.org/" xmlns:b="http://b.org/"> <a:Element b:Attribute="text"> </a:Element> </a:Sample> 但是,当我运行我的程序时,我得到以下输出: Prefix: a URI: http://a.org/ Prefix: a URI: http:

我想读取DOM文档中的所有名称空间

我的输入XML文件是:

<a:Sample xmlns:a="http://a.org/" 
    xmlns:b="http://b.org/">
    <a:Element b:Attribute="text"> </a:Element>
</a:Sample>
但是,当我运行我的程序时,我得到以下输出:

Prefix: a
URI: http://a.org/
Prefix: a
URI: http://a.org/

有人能帮我吗。

您需要在主元素循环中循环每个元素的属性:

NamedNodeMap map = element.getAttributes();
for (int iattr=0; iattr<map.getLength(); iattr++) {
   Attr attr = (Attr)map.item(iattr);
   if (attr.getNamespaceURI() != null) {
      System.out.println("Attr " + attr.getName() + " -  " + attr.getNamespaceURI());
   }
}
NamedNodeMap=element.getAttributes();

对于(int iattr=0;iattr)您只查看元素的名称空间。b名称空间仅用于元素的属性。您还必须检查所有属性并从中收集名称空间。我已将节点迭代器更改为同时包含元素和属性,如下所示:NodeIterator I=dt.createNodeIterator(srcfile,NodeFilter.SHOW_元素| NodeFilter.SHOW_属性,null,false);即使这样,我也会得到相同的结果。这不起作用。SHOW_属性不是非常有用。请参阅Javadoc中createNodeIterator的注释。“因为属性从来都不是其他节点的子节点,所以在遍历文档树时它们不会出现。”您必须为每个元素分别循环每个元素上的属性。还有一个问题我正在努力解决。我需要一个范围映射和名称空间对象列表(名称空间对象将同时具有前缀和名称空间url)。是否可以获得它?
NamedNodeMap map = element.getAttributes();
for (int iattr=0; iattr<map.getLength(); iattr++) {
   Attr attr = (Attr)map.item(iattr);
   if (attr.getNamespaceURI() != null) {
      System.out.println("Attr " + attr.getName() + " -  " + attr.getNamespaceURI());
   }
}