<value type="typeabc" val="">
<conditions>
<a>text 1</a>
<b>text 2</b>
<c>text 3</c>
</conditions>
</value>
我是第一次使用documentbuilder / java,需要获取Tag a的内容( text 1 )。
此外,我尝试保存内容的变量需要一个整数。
我的想法是:
NodeList nList = document.getElementsByTagName("value");
for (int i = 0; i < nList.getLength(); i++) {
Element el = (Element) nList.item(i);
int contenta = Integer.parseInt(el.getElementsByTagName("a")
.item(i).getTextContent());
if (value.conditions.a.isNotNull) {
value.conditions.a.value = contenta;
}
}
不要被略微奇怪的语法弄糊涂。我正在使用mps jetbrains,这使得它有点复杂但根据我的问题不应该改变任何东西。
我是否需要迭代?我是否可以直接获取特定标记的内容(如果它只在xml中出现一次?
)答案 0 :(得分:0)
如果特定标签的内容只在xml中出现一次,我可以直接抓取吗?
当然可以。您可以从Java的一个节点导航到Java,也可以使用XPath。您的示例的表达式为"/values/conditions/a"
甚至更简单:"//a"
。
因为使用XPath需要一些预先安排(特别是在使用命名空间时),我建议使用library。 这可以将问题减少到一个班轮:
String content = new XBProjector().io().file("xmlfile.xml").evalXPath("//a").as(String.class);
// content would contain "text 1"
如果要读取int值,它将如下所示:
int content = new XBProjector().io().file("xmlfile.xml").evalXPath("//a").as(Integer.class);