1

VB6のコード(XMLファイル)

次のように私のXmlファイル

<book>
    <name>x1</name>
    <price>1<price>
    <name>x2</name>
    <name>x3</name>
    <price>2<price>
</book>

ルート ノードはブックです

Set nodlist = xmlDoc.selectNodes("/Book/Price")

1 つのノードのみを選択し、残りは無視されます

そして、という名前のすべてのノードを取得したいと思いpriceます。

4

2 に答える 2

2
Set nodlist = xmlDoc.selectNodes("/Book/Price")

XPath は CAse senSitiVe です。指定されたノードも、提供された XML ドキュメントにもノードがありませBookPrice。したがって、上記のメソッド呼び出しは空の を返す必要がありますXmlNodeList

あなたがしたい:

Set nodlist = xmlDoc.selectNodes("/book/price")
于 2012-06-09T14:25:08.877 に答える
1

1/ OP のコメントで JP が理解したように、2 番目のノードprice正しく閉じられていません。

selectNodes()メソッドは XPath セレクター (構文チュートリアル) を使用していますね。

2/ Dimitreが言ったように、XPath は大文字と小文字を区別するため、実際の要素がand/Book/Priceの場合は無効です。である必要があります。bookprice/book/price

ただし、最初のpriceノードが返された場合、セレクターが実際には小文字である可能性が最も高く、適切に閉じられていない 2 番目のノードに/book/price問題がある可能性があります。price

3/book最後に、それが本当にXMLのルートノードであると確信していますか? bookstore親とかいないの?

セレクターにフォームがある場合/book/price(最初はスラッシュが 1 つだけ)、それは絶対パスであり、実際にprice選択された要素のすべての要素を選択する必要がありますが、与えられたのは(非常に単一の)ルート ノード (他にはありません) のみです。 1 つのドキュメントに複数のルートを含めることはできず、親をまったく持つことはできないため、明らかにドキュメントに含まれています)。bookbookbook

これを試して:

  • book/priceドキュメントのすべてのノードのpriceすべてのノードを返す必要がありますbook
  • pricepriceドキュメント全体の親ノードが何であれ、すべてのノードを返す必要があります

bookstoreまたはのような別のルートがあり、絶対パスlibraryを使用したい場合は、次を試してください。

  • /bookstore/book/price(または/library/book/price、または実際のルートノードが何であれ)

また、 XML ツリーのどこにいるかに応じて、そのようなものを使用してノードに相対的にアクセスすることもできます。

  • //book/price
  • //price
于 2012-06-09T10:01:12.823 に答える