gpt4 book ai didi

xpath - xpath多个范围:从多个树中选择数据

转载 作者:行者123 更新时间:2023-12-03 17:13:24 28 4
gpt4 key购买 nike

问题:根据树的另一部分中的节点选择数据

如何在带有标签=“ status”的列的行中选择数据?

数据应为/result/rows/items/item/c/items/item/v中的“ data2”
并且选择应基于label='status',即/result/cols/items/item/label=status

在“状态”下面的XML中,第2列是列,但可能会更改为第1列,因此相应的XPath应该返回第1列的数据。

<result>
<cols>
<items>
<item>
<id>c1</id>
<label>result</label>
<type>string</type>
</item>
<item>
<id>c2</id>
<label>status</label>
<type>string</type>
</item>
<item>
<id>c3</id>
<label>message</label>
<type>string</type>
</item>
</items>
</cols>
<rows>
<items>
<item>
<c>
<items>
<item>
<v>data1</v>
</item>
<item>
<v>data2</v>
</item>
<item>
<v />
</item>
</items>
</c>
</item>
</items>
</rows>
</result>

最佳答案

您的描述不太清楚。
我是这样的:

有一个指示该列的节点。该列的标签为“状态”。你得到这个标签

/result/cols/items/item/label[text()='status']


但这不是您想要的。首先,您想找出该列在哪个位置。你得到那个位置

count(/result/cols/items/item[label/text()='status']/preceding-sibling::*)+1


但这仍然不是您想要的。根据该信息,您想要选择行中的实际数据。你得到与

/result/rows/items/item/c/items/item[2]/v/text()


但是,您并不总是需要该行的第二列,而是希望该行基于之前确定的列索引。因此,您需要将两者结合起来:

/result/rows/items/item/c/items/item[count(/result/cols/items/item[label/text()='status']/preceding-sibling::*)+1]/v/text()


最后一个表达式不包含任何硬编码索引,仅使用列标题文本“状态”来确定数据的位置。在您的示例中,它返回 data2。如果将列标题文本更改为“ result”,则会为您提供 data1

关于xpath - xpath多个范围:从多个树中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28499524/

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