やっていなかったことの一つに名前空間があります。ここではプレフィックスを持つ名前空間を宣言してみます。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
namespace TestLinqToXML
{
public class CreateXML
{
public XDocument createTestData() {
var settings = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"));
settings.Add(new XElement("LogClientSettings",
new XAttribute(XNamespace.Xmlns + "xsi",
"http://www.w3.org/2001/XMLSchema-instance"),
new XAttribute(XNamespace.Xmlns + "xsd",
"http://www.w3.org/2001/XMLSchema")));
settings.Root.Add(new XElement("DatabaseName",
"TestDatabase"));
XElement list = new XElement("GridSettings");
XElement temp = new XElement("GridSetting");
temp.Add(new XElement("PointId", 1));
temp.Add(new XElement("ControlName", "dbGrid1"));
temp.Add(new XElement("ColumnNumber", 1));
temp.Add(new XElement("Description", "あの"));
list.Add(temp);
settings.Root.Add(list);
return settings;
}
}
}
肝は15行と17行です。XAttributeでつけるんですね。(当たり前ですね)
結果はこんな感じです。
TestDatabase
1
dbGrid1
1
あの
このほかLinq to XMLでの名前空間について詳しくは以下のMSDNドキュメントをお読みください。
コメント