入力するXMLデータを紹介します。
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Items>
<Item code="PAA-03291">
<Name>Penguin Cookie</Name>
<Price>250</Price>
</Item>
<Item code="PAA-05180">
<Name>Whale Candy</Name>
<Price>80</Price>
</Item>
</Items>
</root>
/*
先頭に
using System.Xml.Linq;
using System.Xml.XPath;
を追加します。
*/
private void button9_Click(object sender, EventArgs e)
{
XDocument doc = XDocument.Load(textBox1.Text);
IEnumerable<XElement> elemSelect = from item
in doc.XPathSelectElements("/root/Items/Item/Name") select item;
foreach (XElement elem in elemSelect) {
textBox2.Text += "Name:" + elem.Value + "\r\n";
}
}
Penguin Cookie
Whale Candy
----------
XDocumentクラスを宣言し、LoadメソッドでXMLファイルを読み込みます。
XDocument doc = XDocument.Load(textBox1.Text);
Linq文を記述します。in の後ろの部分でXDocument.XPathSelectElementsメソッドを呼び出しています。XPathSelectElementsメソッドを使うとElementの選択条件にXPath式を使えます。
XPath式には/root/Items/Item/Nameを与え、Nameノードを選択対象とします。
IEnumerable<XElement> elemSelect = from item
in doc.XPathSelectElements("/root/Items/Item/Name") select item;
foreachループでelemSelectのデータにアクセスしますelemSelectはXElement 型のIEnumratableですのでValueプロパティの内容をTextBox2に表示します。elemSelectはNameノードが選択されて代入されているため、実行結果として"Penguin Cookie"といった文字列が出力されます。
foreach (XElement elem in elemSelect) {
textBox2.Text += "Name:" + elem.Value + "\r\n";
}