我有以下xml示例文件,我将使用XPath获取数据(XPath是随机提供的,无法识别XPath是否代表叶节点或节点集)。
叶节点xpath的示例: - / OrderResponse / OrderLine [2] / LineItem / ID
节点集xpath的示例: - / OrderResponse / OrderLine
有没有办法检测xpath表示使用java的叶元素或节点集?
<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>
答案 0 :(得分:1)
这两个XPath都选择了节点集,但是从你的问题中可以清楚地知道节点集&#34;你的意思是&#34;非叶子节点集&#34;。
显然,通过查看XPath是否会选择叶子节点,非叶节点,两者都没有,或者根本没有任何东西,但是你无法判断,但是你可以这样做:
做两个XPath选择,一个用于( TheOriginalXPath )+ [*]
,另一个用于( TheOriginalXPath )+ [not(*)]
,所以:
/OrderResponse/OrderLine[2]/LineItem/ID[*]
和
/OrderResponse/OrderLine[2]/LineItem/ID[not(*)]