根据同级节点的值选择XML节点
我有一个VB.NET 2013程序,可以对xml文档进行读/写操作,我试图找出在知道某个节点的兄弟节点的文本时如何访问该节点。我看到过与我尝试做的类似的其他帖子,但我的xml结构略有不同,我不知道如何将这些解决方案应用到我的文档中 下面是我的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
<?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