- - PR -
System.XMLでのXpathについて
1
投稿者 | 投稿内容 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-12-29 16:34
以前,この掲示板でDOMについて質問させていただいたタガです.
その節はありがとうございました. 同じスレッドに記入しようと思ったのですが, ちょっと使っている環境も変わっているので新しいスレッド立ててしまいました. ご迷惑をおかけしてしまいましたら,申し訳ございません. 質問なのですが, VB.NET(2005)でXMLから属性を検索してその属性の親ノードを取得したいと考えております. そこで簡単な例題として下記のXMLデータで,isbnの番号を指定してその属性のタグを 取得したいと考えております.しかしisbnの番号を指定してもbookという要素タグを 取得できません.ただisbnの番号を一桁の数字だと取得できます. また属性タグは要素タグの子ノードではないが,属性タグの親ノードは属性タグと いうことなのでNode_Pare = node.ParentNode(属性ノード)にして取得しようとしても うまくいきません. 最後に,自分が理想として考えているのが,isbnの番号をたとえば Dim isbn_num As String ="A001"などと指定して,ロケーションパス指定のところで ("/Books/book[@isbn = isbn_num]")などのようにできればいいかなと思っているのでが 何かいい方法をご存じではないでしょうか? 自分で作ってみたプログラムも載せておきます. お手数ですが,よろしくお願いします. /* XMLデータ*/ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <Books> <book isbn = "A000"> <title>.Net練習0</title> </book> <book isbn = "A001"> <title>.Net練習1</title> </book> <book isbn = "A002"> <title>.Net練習2</title> </book> <book isbn = "A003"> <title>.Net練習3</title> </book> </Books> /* プログラム */ Dim list As System.Xml.XmlNodeList = doc.SelectNodes("/Books/book[@isbn = 'A01']") Dim node, node_Pare As System.Xml.XmlNode For Each node In list TextBox1.Text = node.Attributes("isbn").Value | ||||||||||||||||||||||||
|
投稿日時: 2006-12-31 18:11
文字列のくくりをシングルクォーテーションではなくダブルクォーテーションにしたらどうだろう?
これでだめなら、contains関数を使用したらどうだろう?
もしくは@isbnを型変換したらどうだろう?
この辺、組み合わせて、いろいろやってみて。
XPATHは変数を扱うことができたような気がするけど、この変数をMSXMLにどうやって教えてあげるのか私には分かりません。 代替案として、.net framework下での開発ということなので、 System.String#Format()で整形してはいかが? ちなみに、
において、A001ではなくA01となっているのは、記載ミスということでOK 重箱の隅つつきと思うかもしれないけど、結構こうゆう単純なことで引っかかることとがよくあるので。 | ||||||||||||||||||||||||
|
投稿日時: 2007-01-03 11:56
かずさん,ご返答ありがとうございます.
そして返答が遅くなってしまい,申し訳ございません. 早速試してみたところ,1)だとエラーが起こり,2)ではきちんと ノードを拾ってくれませんでした. ですが,3)だときちんと目的のノードを取得することができました. ありがとうございます. 1)"/Books/book[@isbn = ¥"A01¥"]" 2)"/Books/book[countains(@isbn, 'A01')]" 3)"/Books/book[string(@isbn) = 'A01']" >System.String#Format()で整形 ですか・・・,どうやっていいのかわからないので, ちょっと調べてみたいと思います. アドバイスありがとうございます(^^ >"/Books/book[string(@isbn) = 'A01']" そうです(><). そうですよね,こういう些細なミスに何時間も費やすことがありますよね. いろいろとご指摘ありがとうございます. とても助かりました. |
1