- - PR -
XPathのエラー
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-01-14 11:55
こんにちは。
VB.NETで開発している者です。 <?xml version="1.0" encoding="utf-8" ?> <SetLabel xmlns="http://www.ERPPKG/SetLabel"> <Report PrgID="AA" Label="1"> <Name>Name1</Name> </Report> </SetLabel> 上記のようなXML文書から、XPathを用いて、該当するデータを取得したいと 思っています。 (以下、コーディング) Dim xmlDocument As Xml.XmlDocument xmlDocument = New Xml.XmlDocument xmlDocument.Load(C:\AAA.xml") xmlDocument.SelectNodes("//Report[@PrgID='AA']").Count ↑このとき、結果は"0"になっています。 つまり一件もデータが取得できていないのです。 どこか間違っているところがありましたら、ぜひご教授ください。 お願いします。 | ||||
|
投稿日時: 2004-01-15 00:45
デフォルト名前空間が原因ですね。
http://www.doraneko.org/xml/xpath/REC991116.html
と言うことで、検索する際にXML側はデフォルト名前空間でも内部的には「URI+ローカル部分」 として扱われます。 Xpath側は名前空間の指定が無いため、URI無しの<Report>を探しに行きます。 結果としてマッチしません。 XPath側で適当に名前空間識別子をつける必要があるのかと思います。 下の例では「samp」にしています。 Dim doc As XmlDocument Dim manager As XmlNamespaceManager doc = New XmlDocument() doc.Load("AAA.xml") manager = New XmlNamespaceManager(doc.NameTable) manager.AddNamespace("samp","http://www.ERPPKG/SetLabel") doc.SelectNodes("//samp:Report[@PrgID='AA']",manager).Count | ||||
|
投稿日時: 2004-01-16 22:33
ありがとうございます。
名前空間が原因なのですね!! 名前空間とノードの名前をセットで記述したら、出来ました。 勉強になりました。 | ||||
1
