Java-Documentbuilder获取单个元素tagcontent XML

时间:2017-06-19 07:40:26

标签: java xml dom

<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中出现一次?

1 个答案:

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