【问题标题】:How to get the element from the xml using Xpath Java如何使用 Xpath Java 从 xml 中获取元素
【发布时间】:2020-06-17 09:48:40
【问题描述】:
<employees>
    <employee>
        <firstName>Lokesh</firstName>
        <lastName>Gupta</lastName>
        <department>
            <id>101</id>
            <name>IT</name>
        </department>
    </employee>
</employees>

我想使用 Xpath 获取元素名称..

我需要计算使用count(//employees/*)count(//employees/employee/department/*) 获得的元素数量

它正在返回每个父母的计数..

我还需要获取元素名称//employees/employee/*/name() 以获取元素名称 FirstName、LastName 和 Department..

(//employees/employee/department/*/name()) 返回名称和 ID.. 但它显示错误 javax.xml.transform.TransformerException: Unknown nodetype: name .

【问题讨论】:

  • 您可以尝试使用 local-name() 而不是 name()。 local-name() 返回一个字符串,即没有命名空间信息的元素名称。 name() 返回一个 QName,其中包含命名空间。
  • javax.xml.transform.TransformerException: Unknown nodetype: local-name at com.sun.org.apache.xpath.internal.compiler.XPathParser.error(Unknown Source)

标签: java xml xpath


【解决方案1】:

您想要获取元素名称(而不是它的值)。 name() 必须出现在第一位。 由于javax只支持XPath 1.0,所以可以使用:

concat(name(//employees/employee/*[1]),",",name(//employees/employee/*[2]),",",name(//employees/employee/*[3]))

输出:firstName,lastName,department

concat(name(//employees/employee/department/*[1]),",",name(//employees/employee/department/*[2]))

输出:id,name

如果您不知道每个父元素的子元素数量,则应使用循环方法。首先,计算并存储子节点的数量(count(//employees/employee/*)),然后创建一个循环,在每次迭代时增加位置索引([i]//employees/employee/*[i]i=i+1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多