0

私はしばらくの間、Xpath(VB.netで)を使用して次のことを試みてきました:

最初に、クエリ文字列で Web ページに渡された「ID」属性を使用してすべての CATEGORY ノードをチェックし、「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>

別のページの別の場所で次の式を使用して特定のカテゴリを選択したため、PRODUCT 子ノードで作業できますが、特定の CATEGORY ノードを選択してその NAME 属性に移動することはできません。

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

コードの支援をいただければ幸いです。

どうもありがとう

4

2 に答える 2

0

kjhughes に感謝しますが、次のコードは、製品ノードの内容全体を 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
于 2013-11-04T21:00:19.363 に答える
0

そのITEM属性が一意であり、itemも の場合と同様にクエリ文字列で使用できると仮定すると、この文字列を使用して XPath を作成し、特定の要素idを選択できます。PRODUCT

"//PRODUCT[@ITEM=" + Request.QueryString.Get("item") + "]"

が とのみ一意である場合は、次PRODUCTの文字列を使用して XPath を作成します。ITEMCATEGORY

"//CATEGORY[@id=" + Request.QueryString.Get("id") + "]" + "/PRODUCT[@ITEM=" + Request.QueryString.Get("item") + "]"

上記の仮定のいずれかが正しくない場合は、以下にコメントしてください。調整します.

以下のコメントごとに更新します。

ああ、わかりました、その属性によって与えられたのname属性値を取得するには:CATEGORYid

"//CATEGORY[@id=" + Request.QueryString.Get("id") + "]/@name"
于 2013-11-04T11:26:35.077 に答える