Java Documentbuilder获取单元素标记内容XML 文本1 文本2 文本3

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>

我第一次使用documentbuilder/java,需要获取标记a(text 1)的内容

另外,我试图保存内容的变量需要一个整数

我的想法是:

<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);