java - 如何使用java从XML读取父节点的子节点

标签 java xml xpath expression

 <invoice>
    <obs>
    <ob>
     <code>ABC</code>
    </ob>
    <ob>
     <code>123</code>
    </ob>
    </obs>
  </invoice>
<invoice>
    <obs>
    <ob>
     <code>DEF</code>
    </ob>
    </obs>
  </invoice>
</invoices>

好的,我的问题是,我有一个 xml,它将从外部系统传给我,它可以有大量的“发票”节点,一个“发票”节点可以有大量的“代码”节点。我想读取所有“发票”节点的“代码”节点并将它们保存在这样的数组中:invoice[1].code[1]=ABCinvoice[1].code[2]=123invoice[2] .code[1]=DEF 。如何在 JAVA 中使用 XPathExpression 来执行此操作。下面是我的 xpath 表达式,它不起作用。

expr = xpath.compile("//invoices/invoice/obs/ob/code/text()");

请给出“发票”节点数和“代码”数量的一般答案 节点高

最佳答案

您的 XML 结构不佳。有一个<invoices>一开始就失踪了。正确的结构如下:

    <invoices>
        <invoice>
            <obs>
                <ob>
                    <code>ABC</code>
                </ob>
                <ob>
                    <code>123</code>
                </ob>
           </obs>
        </invoice>
        <invoice>
            <obs>
                <ob>
                    <code>DEF</code>
                </ob>
            </obs>
        </invoice>
    </invoices>

您定义的xpath表达式是正确的。我使用以下命令测试了 python(和 lxml 库)的速度:

from lxml import etree
tree = etree.parse('yourfile.xml')
root = tree.getroot()
root.xpath('//invoices/invoice/obs/ob/code/text()')

我得到了你想要的数组:

['ABC', '123', 'DEF']

关于java - 如何使用java从XML读取父节点的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29080161/

相关文章:

java - Android - 操作 Twitter 个人资料图片

sql - 使用 XML FOR 向 T-SQL 查询添加命名空间

Java:数学线设计

Java Streams 按最小值/最大值过滤嵌套集合

php - 在 ImageView 上设置图像从 PC 到 Android

java - 为什么此 Activity 显示在新的Android版本中而不显示在旧版本中

python - 在 Python 中将 CSS 选择器转换为 XPath

xml - 使用 XPATH 获取特定 XML 节点的位置?

java - Java中的xpath提取所有xml元素

java - JCR SQL2 查询 : binding of ISDESCENDANTNODE param