gpt4 book ai didi

java - 如何检测XPath代表的是叶节点或者节点集?

转载 作者:行者123 更新时间:2023-12-01 12:38:54 29 4
gpt4 key购买 nike

我有下面的 xml 示例文件,我将使用 XPath 获取数据(XPath 是随机给出的,无法识别 XPath 是否代表叶节点或节点集)。

叶节点xpath示例:-/OrderResponse/OrderLine[2]/LineItem/ID

节点集xpath示例:-/OrderResponse/OrderLine

有没有办法使用java检测xpath表示叶元素或节点集?

<OrderResponse>
<ID>79858</ID>
<IssueDate>2011-05-04</IssueDate>
<OrderLine>
<LineItem>
<ID>1</ID>
<SalesOrderID>1</SalesOrderID>
<Note>tCP</Note>
<LineStatusCode>1</LineStatusCode>
<Quantity unitCode="PCE">1.0</Quantity>
</LineItem>
</OrderLine>
<OrderLine>
<LineItem>
<ID>2</ID>
<SalesOrderID>2</SalesOrderID>
<LineStatusCode>2</LineStatusCode>
<Quantity unitCode="PCE">2.0</Quantity>
</LineItem>
</OrderLine>
</OrderResponse>

最佳答案

这两个 XPath 都选择节点集,但从您的问题中可以清楚地看出,“节点集”指的是“非叶节点集”。

显然,仅通过查看 XPath 无法判断它是否会选择叶节点、非叶节点、两者或什么都不选择,但您可以这样做:

进行两项 XPath 选择,一项用于 (TheOriginalXPath) + [*],另一项用于 (TheOriginalXPath) + [不是(*)],所以:

/OrderResponse/OrderLine[2]/LineItem/ID[*]

/OrderResponse/OrderLine[2]/LineItem/ID[not(*)]
  • 如果只有第一个查询返回结果,则节点为非叶子元素
  • 如果只有第二个查询返回结果,则该节点为叶子节点
  • 如果两者都返回结果,则 XPath 匹配叶节点和非叶元素的混合
  • 如果两者都没有返回结果,则 XPath 不匹配任何内容

关于java - 如何检测XPath代表的是叶节点或者节点集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25308305/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com