gpt4 book ai didi

xml - 如何在主文档中找到属性等于当前所选节点的属性值的节点

转载 作者:行者123 更新时间:2023-12-03 16:54:08 25 4
gpt4 key购买 nike

我正在浏览文档中的节点列表,一次只能一个节点。

在该处理过程中,我需要使用要处理的节点的局部属性值从更广泛的文档中选择节点。

我希望在单个XPath中表达这一点。

如果首先获得本地属性值,则可以将其插入xpath,但是我不希望这样做,因为我希望Xpath是独立的。

以下文档是这种结构的示例,但仅用于说明。

<root>
<pageGenre>
<page ref="attvalue1"/>
<genre>horror</genre>
</pageGenre>
<pageGenre>
<page ref="attvalue1"/>
<genre>thriller</genre>
</pageGenre>
<pageGenre>
<page ref="attvalue2"/>
<genre>cooking</genre>
</pageGenre>
<book att="attvalue1">
<author>Lovecraft</author>
</book>
<book att="attvalue2">
<author>E.E. Smith</author>
</book>
</root>


我首先使用以下命令从文档中找到节点列表:

。//书

然后对于每个书节点,我使用该节点来获取 att的值

./@att

每次都有效。

我想要做的是通过一个Xpath获得该书的所有页面体裁。

我努力了:

// pageGenre / page [@ref = ./@att]/../genre

这不起作用,显示为空白。

如果我用

[@ref = // @ att]

我只是获得了文档中所有 att书籍的所有体裁。

如果我先解析 ./@att值,然后编写Xpath,它就可以正常工作,但是我不想“知道”这件事需要做,因为我希望XPath列表在不使用任何特殊情况的情况下使用通用调度程序。

我也尝试过 self::/@att,但是正如人们期望的那样,它与 ./@att相同。

任何想法表示赞赏。

最佳答案

您要从单个节点启动XPath查询并对其进行反向引用(以获取att的值),函数中没有作用。接下来的问题是一种确认。


“我能看到完成您在注释中下面描述的内容的唯一方法是使用LINQ to XML,XPath变量或定义自己的current()函数”。 [.NET XPath starting from a specific element and backreferencing to it]


我们在这里尝试:

//pageGenre/page[@ref = ./@att]/../genre


无效,因为 ./@att选择相对于当前节点的 att属性,该属性是 <page>而不是 <book>。要引用该部分中的 <book>节点,您需要使用 current()函数。

因此,最后,解决方案是实现上面链接中提供的3种方法之一,或者如果所有这些方法都太复杂/过度,则在每次迭代开始时都坚持使用 att的存储值。

关于xml - 如何在主文档中找到属性等于当前所选节点的属性值的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21364288/

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