根据同级节点的值选择XML节点

根据同级节点的值选择XML节点,xml,vb.net,xpath,Xml,Vb.net,Xpath,我有一个VB.NET 2013程序,可以对xml文档进行读/写操作,我试图找出在知道某个节点的兄弟节点的文本时如何访问该节点。我看到过与我尝试做的类似的其他帖子,但我的xml结构略有不同,我不知道如何将这些解决方案应用到我的文档中 下面是我的xml结构示例: <?xml version="1.0" encoding="utf-8"?> <Books> <Book> <Title>Hansel and Gretel</Title&g

我有一个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>
当然,返回“221”

text()
在值中搜索<代码>。选择父元素

编辑


感谢您对
的解释,已从答案中删除。

XPath中的
@
属性的快捷方式:
。它选择属性节点(或属性轴上的更多特定节点)

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

[]
中的部分是节点的条件
[@Title=“Green Eggs and Ham”]
使用给定值筛选节点的属性
Title

要查找子元素节点
标题
,请删除
@


/Books/Book[Title=“Green Eggs and Ham”]

text()
选择文本子节点,选择当前节点。因此,
text()
将每个文本子节点与字符串进行比较,
将比较当前节点的文本内容。感谢您的响应,Bogdan,但是您可以将该代码放在VB.NET示例行的上下文中吗?如何在VB.NET代码中使用它?非常详细的解释,ThW。谢谢那么,我如何在VB.NET代码中使用它呢?
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
//Book/Title[text()='Green Eggs and Ham']/../Price