获取所有子元素而忽略名称空间URI

时间:2013-05-29 12:28:48

标签: java xml xom

有时候我有一个XML:

<resource 
    xsi:schemaLocation="http://www.test.com/resource http://test.com/schema/resource 
    xmlns="http://www.test.com/resource"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...
</resource>

有时没有命名空间URI,即

<resource>
...
</resource>

如何获取resource的所有子元素,无论命名空间URI是什么?

我正在使用nu.xom.Element来处理元素,我以这种方式构建nu.xom.Document

nu.xom.Builder parser = new nu.xom.Builder();
return parser.build( new ByteArrayInputStream(xmlString.getBytes()) );

1 个答案:

答案 0 :(得分:0)

您尚未说明<resource>是否为根元素。如果是,那么找到它是微不足道的。如果没有,请通过以下方式查找所有<resource>元素:

Nodes resourceNodes = yourDoc.query("//*[local-name()='resource']");
for (int i = 0; i < resourceNodes .size(); i++) {
    Element resource = (Element) resourceNodes .get(i);
    Elements childElements = resource.getChildElements();
    // .. etc
}

或直接:

Nodes resourceChildren = yourDoc.query("//*[local-name()='resource']/*");