我想读取DOM文档中的所有命名空间。
我的输入XML文件是:
<a:Sample xmlns:a="http://a.org/"
xmlns:b="http://b.org/">
<a:Element b:Attribute="text"> </a:Element>
</a:Sample>
我想在给定的输入XML中获取所有带有关联命名空间的前缀。
我有一个方法,其定义如下。
public Document check(Document srcfile) {
Document naReport = null;
if(srcfile != null) {
// Parse the document using builder.
if (srcfile instanceof DocumentTraversal) {
DocumentTraversal dt = (DocumentTraversal) srcfile;
NodeIterator i = dt.createNodeIterator(srcfile, NodeFilter.SHOW_ELEMENT, null, false);
System.out.println(srcfile.getPrefix());
System.out.println(srcfile.getNamespaceURI());
Element element = (Element) i.nextNode();
while (element != null) {
String prefix = element.getPrefix();
if (prefix != null) {
String uri = element.getNamespaceURI();
System.out.println("Prefix: " + prefix);
System.out.println("URI: " + uri);
// bindings.put(prefix, uri);
}
element = (Element) i.nextNode();
}
}
}
return naReport;
}
但是,当我运行我的程序时,我得到以下输出:
Prefix: a
URI: http://a.org/
Prefix: a
URI: http://a.org/
有人可以帮助我。
答案 0 :(得分:0)
您需要遍历主元素循环中每个元素的属性:
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());
}
}