- - PR -
属性の取得
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-07-08 17:26
いつもお世話になっています。
質問です。 以下のコードでXMLを検索しているのですが XmlNamespaceManager xmlnm = new XmlNamespaceManager(xmlDocument.NameTable); xmlnm.AddNamespace("nmsp","x-schema:tsSchema.xml"); XmlNodeList List = rootXmlNode.SelectNodes("//nmsp:abcde/nmsp:kkk",xmlnm); <abcde id="12345">の属性id="12345"を取得したいと思っています。 いろいろ調べたりしてみたのですが方法が分かりません。 XPATHの問題だと思うのですが。。。。 ご存知のかたいらっしゃいましたらご教授ください |
|
投稿日時: 2004-07-08 17:50
言語もプラットフォームも書かれていないのですが、C# + .NETですよね?
属性を表すXPATH式は@属性名です。なので、"//nmsp:abcde/@nmsp:id"でどうですか? |
|
投稿日時: 2004-07-08 18:40
ukさんお返事ありがとうございます。
はいC#、.NETです。(__) XmlNode rootNode = xmlDocument.DocumentElement; XmlNamespaceManager xmlnm = new XmlNamespaceManager(xmlDocument.NameTable); xmlnm.AddNamespace("nmsp","x-schema:tsSchema.xml"); XmlNodeList xmlList = rootNode.SelectNodes(".//nmsp:abcde/@nmsp:id",xmlnm); foreach(XmlNode nde in xmlList) { this.listView2.Items.Add(nde.InnerText); } でやってみたのですがforeachのところで「スコープ外」のエラーが出てしまいます。 ただいま調べ中です。。。 ご存知のでしたら教えてください。。。 [ メッセージ編集済み 編集者: Marcye 編集日時 2004-07-08 19:25 ] [ メッセージ編集済み 編集者: Marcye 編集日時 2004-07-08 19:50 ] |
|
投稿日時: 2004-07-09 14:29
というわけで GetEnumeratorを使用すればよいのではないでしょうか。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=12728&forum=7 |
|
投稿日時: 2004-07-09 15:54
MMXさんお返事ありがとうございます。
以下のコードだと正しく表示されるのですが・・・ XmlNodeList xmlNodeList = rootXmlNode .SelectNodes(".//nmsp:abcd/nmsp:kkk",xmlnm); 以下のコードだとforeachの所でスコープ外が出てしまいます。 XmlNodeList xmlList = rootNode.SelectNodes (".//nmsp:abcde/@nmsp:id",xmlnm); XPTAHの問題なのでしょうか? 出来ればXPTAHを使いたいと思っているのですが・・・ GetEnumeratoを使った方法の方が良いのでしょうか? |
|
投稿日時: 2004-07-09 17:09
foreach する前に 要素数を確認してみましょう 0になっていないか
あと //nmsp:abcde/@id で試すとか |
|
投稿日時: 2004-07-09 17:10
C#に詳しくないので、「スコープ外」がどのような場合に出るのかわからないのですが、
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemxmlxmlnodeclassselectnodestopic.asp このリファレンスには、そのまんまのサンプルコードが出ていますので、コーディングそのもの は間違っていないように思えます。とりあえず、「スコープ外」とはなんなのかをまず確認した ほうがいいのではないですか? |
|
投稿日時: 2004-07-09 17:18
ukさん MMXさんお返事ありがとうございました。
MMXさんのおっしゃっていた//nmsp:abcde/@id にすると表示することが出来ました。 属性の場合は「nmsp:」がいらないのですね。 ukさんに教えていただいたHPは以前に教えていただいた後見たので XPATHの問題ではないと思っていたのですが。。。。 本当にありがとうございました。 |