- - PR -
xml 同列要素の取得
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-06-23 16:43
はじめまして。
当方C#、xmlを勉強中、初心者です。 質問させてください。 とあるxml文書 <replacement> <kkk>aaa</kkk> <mmm>ccc</mmm> <mmm>bbb</mmm> </replacement> からaaaを抽出してlistView1に表示させ、listView1のaaaを選択したら ccc bbbがlistView2に表示されるようにしたいと思っています。 aaaを抽出しlistView1に表示するまではできたのですが、 aaaを選択したときにccc,bbbを表示する方法がわかりません。。。 どなたかご教授ください。m(__)m | ||||||||||||
|
投稿日時: 2004-06-23 18:02
Hasumiです。
XMLの構造に問題があるような気がしますが・・・。 強引にするなら
こんな感じかな。 | ||||||||||||
|
投稿日時: 2004-06-23 18:20
お返事ありがとうございます。
早速ためしてみます(__) 本当のXMLファイルはこんな感じです。 <XML ID="Microsoft Search Thesaurus"> <!-- Commented out--> <thesaurus xmlns="x-schema:tsSchema.xml"> <expansion> <sub weight="0.8">Internet Explorer</sub> <sub weight="0.2">IE</sub> <sub weight="0.9">IE5</sub> </expansion> <replacement> <pat>NT5</pat> <pat>W2K</pat> <sub>Windows 2000</sub> </replacement> <expansion> <sub weight="0.5">run**</sub> <sub weight="0.5">jog**</sub> </expansion> <expansion id="0001"> <sub>outlook</sub> <sub>Outlook</sub> <sub>OL</sub> <sub>ol</sub> <sub>アウトルック</sub> </expansion> </thesaurus> </XML> | ||||||||||||
|
投稿日時: 2004-06-23 18:54
すいません質問です。
教えていただいたコードを参考にしてみたのですが 以下のコードだとlistBoxに表示できません。。。。 やっぱりxmlDocument.Loadxml(openFileDialog1.FileName);では無理なのでしょうか? if (openFileDialog1.ShowDialog() == DialogResult.OK) { textBox10.Text = openFileDialog1.FileName ; XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Loadxml(openFileDialog1.FileName); XmlNode rootXmlNode = xmlDocument.DocumentElement; XmlNodeList xmlNodeList = rootXmlNode.SelectNodes("//replacement/pat"); foreach(XmlNode node in xmlNodeList) { this.listBox1.Items.Add(node.InnerText); } 今までは以下のコードで表示させていました。 やっぱりxpathで検索して表示した方が良いのでしょうか。。。? if (openFileDialog1.ShowDialog() == DialogResult.OK) { textBox4.Text = openFileDialog1.FileName ; XmlTextReader reader = null; try { reader = new XmlTextReader(openFileDialog1.FileName); while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name == "pat" ) { listView1.Items.Add(reader.ReadInnerXml()); } } } | ||||||||||||
|
投稿日時: 2004-06-23 20:04
Hasumiです。
ヘルプを見てください。 XmlDocument.LoadXml メソッドはXMLを格納している文字列を引数に指定します。 ファイルから読み込む場合はXmlDocument.Load メソッドを使用します。
| ||||||||||||
|
投稿日時: 2004-06-23 20:29
Hasumiさん
お返事ありがとう御座います。 xmlDocument.Load(openFileDialog1.FileName); は以前も試してみたのですが、表示出来ませんでした private void button7_Click(object sender, System.EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) //ファイル選択ダイアログ { textBox4.Text = openFileDialog1.FileName ; //フルパスの表示 XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(openFileDialog1.FileName); XmlNode rootXmlNode = xmlDocument.DocumentElement; XmlNodeList xmlNodeList = rootXmlNode.SelectNodes("//replacement/pat"); foreach(XmlNode node in xmlNodeList) { this.listBox1.Items.Add(node.InnerText); } } } いろいろと調べてはいるのですが・・・・。 まだまだ初心者なので。。。 | ||||||||||||
|
投稿日時: 2004-06-23 21:06
Hasumiです。
クイックウォッチ等で値を確認しながら実行してみるとか。 ところでXMLファイルはIE等で正常に表示されますか。 こちらで確認してみたところ
の個所でエラーになります。 ※ただし<thesaurus xmlns="x-schema:tsSchema.xml"> は <thesaurus>に変更しています。
を<sub>aaa</sub>等にすれば表示されました。 | ||||||||||||
|
投稿日時: 2004-06-24 09:54
Hasumiさん
お返事ありがとうございます。 スイマセン。レスが遅れてしまいました。 引用-------- ところでXMLファイルはIE等で正常に表示されますか。 こちらで確認してみたところ <sub>アウトルック</sub> の個所でエラーになります。 ------------- こちらの環境では、IEで<sub>アウトルック</sub>も正常に表示されます。 引用--------- クイックウォッチ等で値を確認しながら実行してみるとか ------------- ありがとうございます。試してみます。 |