gpt4 book ai didi

xml - 根据兄弟节点的值选择 XML 节点

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

我有一个 VB.NET 2013 程序,它读取/写入 xml 文档,我试图找出当我知道节点的一个兄弟节点的文本时如何访问特定节点。我看过其他与我尝试做的事情相似的帖子,但我的 xml 结构略有不同,我不确定如何将这些解决方案应用到我的文档中。

这是我的 xml 结构的示例:

<?xml version="1.0" encoding="utf-8"?>
<Books>
<Book>
<Title>Hansel and Gretel</Title>
<Pages>221</Pages>
<Price>3.5</Price>
<Author>Grimm</Author>
</Book>
<Book>
<Title>Green Eggs and Ham</Title>
<Pages>145</Pages>
<Price>5.25</Price>
<Author>Dr. Seuss</Author>
</Book>
</Books>

我在其他帖子中看到的示例在节点名称中有值 <Title title="Green Eggs and Ham"> .如您所见,我的没有。

我不知道如何为我的 xml 文档使用 XPath、XPathNavigator 等来查找价格,例如,如果我知道标题。

我看到很多这样的例子:/Books/Book[@Title="Green Eggs and Ham"] ,并且我尝试将其与 XPathNavigator.SelectSingleNode() 一起使用,但我无法找出正确的 VB.Net/XPath 语法以用于我的 xml 格式。

更新(示例答案)因为我在 VB.NET 项目中使用它,所以我需要知道如何使用 Bogdan 和 ThW 提供的示例。使用我的示例 XML,我这样做是为了获得标题“Hansel and Gretel”的页数:

Dim xpathDoc As XPathDocument = New XPathDocument([path_to_xml)
Dim xmlNav as XPathNavigator = xpathDoc.CreateNavigator()
Dim pages as String

pages = xmlNav.SelectSingleNode("/Books/Book[Title='Hansel and Gretel']/Pages").Value

当然,返回“221”

最佳答案

XPath 中的@attribute:: 的快捷方式。它选择属性节点(或属性轴上更具体的节点)。

您的Title 节点是一个元素节点。它是 Book 元素节点的子节点。 child 是默认轴,所以它是可选的。基本上 /Books/Book/child::Books/child::Book 的缩写。

[] 中的部分是节点的条件。 [@Title="Green Eggs and Ham"] 过滤具有给定值的属性 Title 的节点。

要查找子元素节点 Title,请移除 @

/Books/Book[Title="绿鸡蛋和火腿"]

关于xml - 根据兄弟节点的值选择 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29148366/

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