Java 读取DOM文档中的所有名称空间
我想读取DOM文档中的所有名称空间 我的输入XML文件是: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:
<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());
}
}