- - PR -
親の属性から子の値と属性の取得
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-07-12 14:35
〜ただいまC#勉強中〜
すいません質問です。 下に似たスレッドがあったのですが良く分からなかったので・・・ 以下のコードで属性を検索しlistViewに表示させています。 XmlNodeList xmlNodeList = rootXmlNode .SelectNodes(".//nm:abcde/@id",nm); foreach(XmlNode node in xmlNodeList) { this.listView1.Items.Add(node.InnerText); } 表示している属性(グループ名)を選択したときに子ノードの値(ああああ、いいいい、うううう)とその属性(0.8,0.2,0.9)をlistViewに表示したいとおもっているのですが・・・ 方法が分かりませんご存知の方ご教授ください。 <test> <abcde id="グループ名"> <res weight="0.8">ああああ</res> <res weight="0.2">いいいい</res> <res weight="0.9">うううう</res> </abcde> </test> |
|
投稿日時: 2004-07-16 06:40
こんにちは。
抽出するパスを .//abcde[@id='グループ名2']/res として、値の取得は node.Attributes["weight"].Value node.InnerText では如何ですか? ("mn:"をつけずにやってしまったので適宜アレンジしてください) [ メッセージ編集済み 編集者: さいた 編集日時 2004-07-16 06:59 ] [ メッセージ編集済み 編集者: さいた 編集日時 2004-07-16 07:01 ] |
|
投稿日時: 2004-07-16 14:24
さいたさん お返事ありがとうございます。
スイマセン説明が悪かったみたいです。 以下のコードでlistView1に表示している属性の中から選択された項目を 「xmlNode」に取得しています。 この状態から子のノードの値と属性を取得したいと思っています。 方法ご存知でしたらご教授ください。 xmlDocument.Load(openFileDialog1.FileName); XmlNode rootXmlNode = xmlDocument.DocumentElement; XmlNamespaceManager nm = new XmlNamespaceManager(xmlDocument.NameTable); nm.AddNamespace("nm","x-schema:tsSchema.xml"); XmlNodeList xmlNodeList = rootXmlNode .SelectNodes(".//nm:abcde/@id",nm); foreach(XmlNode node in xmlNodeList) { foreach (ListViewItem item in listView1.SelectedItems) { if(node.InnerText == item.Text) { XmlNode xmlNode = node; |
|
投稿日時: 2004-07-16 17:57
さいたさんスイマセンでした。
私が勘違いしておりました。 無事解決いたしました。(__) this.dataTable1.Clear(); try { xmlDocument.Load(openFileDialog1.FileName); XmlNode rootXmlNode = xmlDocument.DocumentElement; XmlNamespaceManager nm = new XmlNamespaceManager(xmlDocument.NameTable); nm.AddNamespace("nm","x-schema:tsSchema.xml"); XmlNodeList xmlNodeList = rootXmlNode .SelectNodes(".//nm:expansion/@id",nm); foreach(XmlNode node in xmlNodeList) { foreach (ListViewItem item in listView2.SelectedItems) { if(node.InnerText == item.Text) { XmlNode xmlNode = node; if(xmlNode != null) { XmlNode parent = xmlNode.OwnerDocument; XmlNodeList xml = parent.SelectNodes(".//nm:expansion[@id='グループ名']/nm:sub",nm); foreach(XmlNode xmln in xml) { if(xmln != null) { if(xmln.Name == "sub") { DataRow dr; dr = dataTable1.NewRow(); dr["展開"] = xmln.InnerText; dr["重み付け"] = xmln.Attributes["weight"].InnerText; dataTable1.Rows.Add(dr); } } } 以下のコードで@idの値が決まっていない場合、複数から選択する場合はどうなるのでしょうかご存知の方ご教授ください。 XmlNodeList xml = parent.SelectNodes(".//nm:expansion[@id='グループ名']/nm:sub",nm); |
1