やっていなかったことの一つに名前空間があります。ここではプレフィックスを持つ名前空間を宣言してみます。
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ドキュメントをお読みください。
コメント