- PR -

属性の取得

投稿者投稿内容
Marcye
常連さん
会議室デビュー日: 2004/06/17
投稿数: 22
お住まい・勤務地: 大阪
投稿日時: 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の問題だと思うのですが。。。。
ご存知のかたいらっしゃいましたらご教授ください


uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-07-08 17:50
言語もプラットフォームも書かれていないのですが、C# + .NETですよね?
属性を表すXPATH式は@属性名です。なので、"//nmsp:abcde/@nmsp:id"でどうですか?
Marcye
常連さん
会議室デビュー日: 2004/06/17
投稿数: 22
お住まい・勤務地: 大阪
投稿日時: 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 ]
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-07-09 14:29
というわけで GetEnumeratorを使用すればよいのではないでしょうか。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=12728&forum=7
Marcye
常連さん
会議室デビュー日: 2004/06/17
投稿数: 22
お住まい・勤務地: 大阪
投稿日時: 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を使った方法の方が良いのでしょうか?
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-07-09 17:09
foreach する前に 要素数を確認してみましょう 0になっていないか
あと
//nmsp:abcde/@id
で試すとか
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-07-09 17:10
C#に詳しくないので、「スコープ外」がどのような場合に出るのかわからないのですが、

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemxmlxmlnodeclassselectnodestopic.asp

このリファレンスには、そのまんまのサンプルコードが出ていますので、コーディングそのもの
は間違っていないように思えます。とりあえず、「スコープ外」とはなんなのかをまず確認した
ほうがいいのではないですか?
Marcye
常連さん
会議室デビュー日: 2004/06/17
投稿数: 22
お住まい・勤務地: 大阪
投稿日時: 2004-07-09 17:18
ukさん MMXさんお返事ありがとうございました。

MMXさんのおっしゃっていた//nmsp:abcde/@id
にすると表示することが出来ました。

属性の場合は「nmsp:」がいらないのですね。

ukさんに教えていただいたHPは以前に教えていただいた後見たので
XPATHの問題ではないと思っていたのですが。。。。

本当にありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)