【发布时间】:2020-06-16 17:03:56
【问题描述】:
我有以下 xml 文件
<Capabilities>
<Capability id="test" name="test">
<File Path="bin/test.exe" />
<File Path="bin/abc.dll" />
<File Path="bin/xyz.dll" />
<File Path="LICENSE" />
<File Path="third-party-programs.txt" />
</Capability>
<Capability id="test1" name="test1">
<File Path="bin/test1.exe" />
<File Path="LICENSE" />
<File Path="third-party-programs.txt" />
</Capability>
<Capabilities>
我想获取 id="test1" 的节点,但不遍历所有节点。 我尝试在 java 中使用以下内容
try {
documentBuilder = documentBuilderFactory.newDocumentBuilder();
document = documentBuilder.parse(xmlFile);
} catch (ParserConfigurationException | SAXException | IOException e) {
e.printStackTrace();
}
// get the node with id="test1"
Node capabilityNode = document.getElementById("test1");
从上面的代码我得到空值。 getElementbyId 文档说 id 属性必须具有类型 ID。如何确保 id 是 ID 类型,或者有没有办法可以直接获取节点而无需按名称循环?
谢谢
【问题讨论】:
-
getElementById 是否在 java 中?
-
是的,它在 java 中
-
一个属性可以通过为文档定义一个这样的DTD来由类型ID组成。否则,您将需要循环。
-
我该如何做那个 DTD?
标签: java xml dom xml-parsing