Vb.net Xpath和MoveToAttribute

Vb.net Xpath和MoveToAttribute,vb.net,xpath,xpathnavigator,Vb.net,Xpath,Xpathnavigator,我尝试使用Xpath(在VB.net中)执行以下操作已有一段时间: 首先使用querystring中传递给网页的“ID”属性检查每个类别节点,然后在找到后将“NAME”属性分配给字符串变量。我在尝试使用MoveToFirstAttribute()时遇到了麻烦,但它不起作用 以下是示例XML: <?xml version="1.0" ?> <STOREITEMS> <CATEGORY id='123' name='Products'> <PRODUCT I

我尝试使用Xpath(在VB.net中)执行以下操作已有一段时间:

首先使用querystring中传递给网页的“ID”属性检查每个类别节点,然后在找到后将“NAME”属性分配给字符串变量。我在尝试使用MoveToFirstAttribute()时遇到了麻烦,但它不起作用

以下是示例XML:

<?xml version="1.0" ?>
<STOREITEMS>
<CATEGORY id='123' name='Products'>
<PRODUCT ITEM='456'>
</PRODUCT>
</CATEGORY>
<CATEGORY id='321' name='More Products'>
<PRODUCT ITEM='789'>
</PRODUCT>
</CATEGORY>
</STOREITEMS>
我将非常感谢您对代码的帮助


非常感谢

假设它的
属性是唯一的,并且
在查询字符串中与
id
一样可用,您可以使用此字符串构造XPath来选择特定的
产品
元素:

"//PRODUCT[@ITEM=" + Request.QueryString.Get("item") + "]"
如果
产品
仅与
类别
唯一,则使用此字符串构造XPath:

"//CATEGORY[@id=" + Request.QueryString.Get("id") + "]" + "/PRODUCT[@ITEM=" + Request.QueryString.Get("item") + "]"
如果上述任何假设不正确,请在下面进行评论,我们将进行调整

根据下面的评论更新:

啊,好的,要获取由其
id
属性给出的
CATEGORY
name
属性值:

iter = nav.Select("//CATEGORY[@id=" + Request.QueryString.Get("id") + "]")
"//CATEGORY[@id=" + Request.QueryString.Get("id") + "]/@name"

感谢kjhughes,但以下代码仅将product节点的全部内容分配给st变量:

Dim doc As XPathDocument
Dim nav As XPathNavigator
Dim iter As XPathNodeIterator
Dim count As Integer = 0
Dim st As String

doc = New XPathDocument(AppSettings.Item("SECURED_ASSETS_PATH") & "App_Data/products.xml")
nav = doc.CreateNavigator
iter = nav.Select("//CATEGORY[@id=" + Request.QueryString.Get("id") + "]/@name")
st = iter.Current.Value

谢谢你的评论。我要做的是选择一个完整的产品类别,然后抓取类别名称(“名称”属性),这样当我在“产品”网页上列出产品时,我可以将其用作页眉。您好,希望您仍然可以帮助我?请看下面我的评论。找到答案。选择后我没有使用MoveNext()