gpt4 book ai didi

xml - 使用 XPath,如何根据文本内容和属性值选择节点?

转载 作者:数据小太阳 更新时间:2023-10-29 01:37:01 26 4
gpt4 key购买 nike

鉴于此 XML:

<DocText>
<WithQuads>
<Page pageNumber="3">
<Word>
July
<Quad>
<P1 X="84" Y="711.25" />
<P2 X="102.062" Y="711.25" />
<P3 X="102.062" Y="723.658" />
<P4 X="84.0" Y="723.658" />
</Quad>
</Word>
<Word>
</Word>
<Word>
30,
<Quad>
<P1 X="104.812" Y="711.25" />
<P2 X="118.562" Y="711.25" />
<P3 X="118.562" Y="723.658" />
<P4 X="104.812" Y="723.658" />
</Quad>
</Word>
</Page>
</WithQuads>

我想找到文本为“July”且 Quad/P1/X 属性大于 90 的节点。因此,在这种情况下,它不应返回任何匹配项。但是,如果我使用 GT (>) 或 LT (<),我会在第一个 Word 元素上获得匹配。如果我使用 eq (=),我将无法匹配。

所以:

//Word[text()='July' and //P1[@X < 90]]

将返回 true,如愿

//Word[text()='July' and //P1[@X > 90]]

如何在 P1@X 属性上正确约束它?

此外,假设我有多个 Page 元素,用于不同的页码。我将如何另外限制上述搜索以查找具有 text()='July', P1@X < 90 的节点?和页面 @pageNumber=3

最佳答案

一般来说,我会认为在 XPath 中使用不带前缀的//有不好的味道。

试试这个:-

/DocText/WithQuads/Page/Word[text()='July' and Quad/P1/@X > 90]

你的问题是你使用了//P1[@X < 90]它从文档的开头开始并开始寻找任何 P1因此它永远是真的。同样//P1[@X > 90]始终为真。

关于xml - 使用 XPath,如何根据文本内容和属性值选择节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1982624/

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