- PR -

親の属性から子の値と属性の取得

1
投稿者投稿内容
Marcye
常連さん
会議室デビュー日: 2004/06/17
投稿数: 22
お住まい・勤務地: 大阪
投稿日時: 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/06/27
投稿数: 10
投稿日時: 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 ]
Marcye
常連さん
会議室デビュー日: 2004/06/17
投稿数: 22
お住まい・勤務地: 大阪
投稿日時: 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;
Marcye
常連さん
会議室デビュー日: 2004/06/17
投稿数: 22
お住まい・勤務地: 大阪
投稿日時: 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

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