2011-10-30 30 views
1

私はルート要素XPathの選択ノード

Dim Navigator = Document.CreateNavigator() 
    Dim ns = New XmlNamespaceManager(Navigator.NameTable) 
    Dim nodes = Navigator.Select("/root", ns) 
    Dim Node = nodes.Current 
    Element = Node.SelectSingleNode("/id") 
    Dim Id = Element.Value 

からIDを取得するには、以下を使用しています(簡体字)、次のXML ...

<root type="object"> 
    <user type="object"> 
     <id type="number">123</id> 
    </user> 
    <id type="number">456</id> 
</root> 

を持っていますこの場合、Element.ValueにはユーザーIDが含まれます

ルートIDの正しいセレクターは何ですか?

答えて

2

root-idノードを直接選択しないのはなぜですか?

Navigator.Select("/root/id", ns) 
+0

わかりませんでした。正確に私が必要なもの、感謝しました。 – Basic

1

あなたの問題はここにです:

Element = Node.SelectSingleNode("/id") 

あなたは絶対式/idが評価されるべきであることを指定しました。

これは、その名前が"id"であれば、XML文書の最上位要素を選択絶対 XPath式(/始まる)です。この特定の場合、最上位要素の名前は"root""id"ではなく)です。したがって、XPath式は何も選択しません。

ソリューション:次のいずれかの

:単一のXPath式と希望の要素を選択しElement = Node.SelectSingleNode("id")

    1. は、相対的な発現を使用してください。

      Element = Navigator.SelectSingleNode("/root", ns) 
      
  • +0

    詳細な説明をいただきありがとうございます。私は '/ id'と' id'の両方を試して、両方とも何も返しませんでした。おそらく私は間違ったノードから始まっていました。他の何かが同じようにばかげていました - 私はそれが失敗する別の理由を見ることができません。 – Basic

    +0

    @Basiclife:恐らく 'Node'は正しく定義されていません。多分、Dim Node = Navigator.SelectSingleNode(/ *) 'のようなものでしょうか? –

    関連する問題