【问题标题】:Java-Documentbuilder Get single element tagcontent XMLJava-Documentbuilder 获取单元素标签内容 XML
【发布时间】:2017-06-19 07:40:25
【问题描述】:
<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 中只出现一次,我可以直接抓取它的内容吗?

【问题讨论】:

    标签: java xml dom


    【解决方案1】:

    如果特定标签在xml中只出现一次,我可以直接抓取它的内容吗?

    当然可以。您可以在 Java 中从 dom 的一个节点导航到下一个节点,也可以使用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);
    

    【讨论】:

      猜你喜欢
      • 2012-04-06
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多