Java Documentbuilder获取单元素标记内容XML 文本1 文本2 文本3
我第一次使用documentbuilder/java,需要获取标记a(text 1)的内容 另外,我试图保存内容的变量需要一个整数 我的想法是:Java Documentbuilder获取单元素标记内容XML 文本1 文本2 文本3,java,xml,dom,Java,Xml,Dom,我第一次使用documentbuilder/java,需要获取标记a(text 1)的内容 另外,我试图保存内容的变量需要一个整数 我的想法是: <value type="typeabc" val=""> <conditions> <a>text 1</a> <b>text 2</b>
<value type="typeabc" val="">
<conditions>
<a>text 1</a>
<b>text 2</b>
<c>text 3</c>
</conditions>
</value>
NodeList nList=document.getElementsByTagName(“值”);
对于(int i=0;i
不要被稍微奇怪的语法弄糊涂了。我和议员jetbrains一起工作,这让事情有点复杂,但不应该根据我的问题改变任何事情
我甚至需要迭代吗?如果特定标记在xml中只出现一次,我可以直接获取它的内容吗
如果特定标记在xml中只出现一次,我可以直接获取它的内容吗
你当然可以。您可以在Java中从dom的一个节点导航到下一个节点,也可以使用。您的示例的表达式将是“/values/conditions/a”
,甚至更简单:“//a”
因为使用XPath需要一些预先安排(特别是在使用名称空间时),所以我建议使用。
这可能会将问题简化为一个班轮:
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;
}
}
如果要读取int值,它将如下所示:
String content = new XBProjector().io().file("xmlfile.xml").evalXPath("//a").as(String.class);
// content would contain "text 1"
int content = new XBProjector().io().file("xmlfile.xml").evalXPath("//a").as(Integer.class);