プログラム言語 XML操作
作成
文字列指定
const string url = "http://example.com/";
var doc = new XmlDocument();
親要素・属性
var root = doc.CreateElement("root", url);
var att = doc.CreateAttribute("att");
att.AppendChild(doc.CreateTextNode("sample"));
root.Attributes.Append(att);
子要素
var child1 = doc.CreateElement("child1", url);
child1.AppendChild(doc.CreateTextNode("sample1"));
root.AppendChild(child1);
var child2 = doc.CreateElement("child2", url);
child2.AppendChild(doc.CreateTextNode("sample2"));
root.AppendChild(child2);
doc.AppendChild(root);
Console.WriteLine(doc.OuterXml());
親要素・属性・子要素をまとめて構築
doc.LoadXml("<root att='sample' xmlns='http://example.com/'><child1>sample</child1><child2>sample</child2></root>");
Console.WriteLine(doc.OuterXml());
結果
<root att="sample" xmlns="http://example.com/">
<child1>sample</child1>
<child2>sample</child2>
</root>
var doc = new XDocument();
XNamespace name = "http://example.com/";
var root = new XElement(name + "root");
var attRoot = new XAttribute("attRoot", "value");
var elm1 = new XElement(name: "elm1", content: "value1");
var elm2 = new XElement(name: "elm2", content: "value2");
var attElm = new XAttribute("attElm", "value");
root.Add(elm1);
root.Add(elm2);
elm2.Add(attElm);
root.Add(attRoot);
doc.Add(root);
Console.WriteLine(doc.ToString());
XNamespace name = "http://example.com/";
var root = new XElement(
name + "root", new XAttribute("att", "valueAtt"),
new XElement("elm1", "value1"),
new XElement("elm2", new XAttribute("attElm", "value"), "value2"));
Console.WriteLine(root.ToString());
結果
<root attRoot="value" xmlns="http://example.com/" >
<elm1>value</elm1>
<elm2 attElm="value">value</elm2>
</root>
文字列→XML変換
結果
Console.WriteLine(doc.ToString());
<root xmlns='https://office-yone.com/'>
<a>システム開発</a>
<b>ホームページ作成</b>
</root>
読取
値で検索
XNamespace name = "https://office-yone.com/";
int count = doc.Descendants(name + "a").Count();
count:1
int count = doc.Descendants(name + "b").Where( x => x.Value == "ホームページ作成").Count();
count:1
int count = doc.Descendants(name + "b").Where( x => x.Attribute("type").Value == "web").Count();
<root xmlns='https://office-yone.com/'>
<a>システム開発</a>
<b type="web">ホームページ作成</b>
<c>
<d>インフラ構築</d>
</c>
</root>
要素名で検索
string val = doc.Element("a").Element("b").Element("c").Value;
val:WordPress
<a>
<b>
<c>WordPress</c>
</b>
</a>
var doc = XDocument.Parse("<a><b><c>C#</c></b><b><c>Java</c></b></a>");
foreach (var elm in doc.Element("a").Elements("b").Elements("c"))
{
Console.WriteLine(elm.Value);
};
→C# Java
<a>
<b>
<c>C#</c>
</b>
<b>
<c>Java</c>
</b>
</a>