编辑:问题解决了。根和后代有不同的命名空间。
因此,我试图获取具有特定名称“包含”的根元素的所有后代。
Element root = doc.getRootElement();
Namespace ns = root.getNamespace();
ElementFilter ef = new ElementFilter("include", ns);
Iterator<Element> childrenIter = root.getDescendants(ef);
LinkedList<String> schemas = new LinkedList<String>();
while (childrenIter.hasNext()) {
Element el = childrenIter.next();
String schemaLocation = el.getAttributeValue("schemaLocation");
schemas.push(schemaLocation);
}
不幸的是,while 循环立即退出,hasNext() 返回 null,即使树中有一个“包含”元素。有什么我做错了吗?我也许也可以使用 getChildren() 然后逐级深入,但这更方便。
<wsdl:definitions ...>
<wsdl:types ...>
<xsd:schema ...>
<xsd:include schemaLocation="VsbKontoInfoGet_1.xsd"/>
</xsd:schema>
</wsdl:types>
...
</wsdl:definitions>
编辑:问题解决了。根和后代有不同的命名空间。