これまで、XML といえば XmlDocument を利用してきました。
XDocument と XmlDocument が相互変換可能なら便利ですね。
しかし残念ながらムリっぽい。
XDocument.CreateReader を使って XmlReader 経由じゃないとムリそうです。(LoadXml はもちろんできますけどね)
MSDN にはこんなサンプルが載ってました。
XDocument xmlTree = new XDocument(
new XElement("Root",
new XAttribute("Att1", "Attribute Content"),
new XElement("Child1", 1),
new XElement("Child2", 2)
)
);
XmlReader reader = xmlTree.CreateReader();
reader.MoveToContent();
XmlDocument doc = new XmlDocument();
XmlNode cd = doc.ReadNode(reader);
doc.AppendChild(cd);
Console.WriteLine(doc.OuterXml);
そんなに難しいものではないですね。
また、XDocument は IXPathNavigable を実装していないため、XSLT を適用しようと思うとこれまでどおり XmlDocument を使用する必要があります。
XDocument.CreateReader には オーバーライドが存在しない(引数なしのメソッドしかない)ため、XML Schema による検証も、XDocument を利用することはできません。
コレまでどおり、XmlReader.Create を利用します。
XML 生成に対するパフォーマンス次第では、XML の生成・照会には System.Xml.Linq を、そのほかには System.Xml を使うということになるかもしれませんね。
# params なコンストラクタなんて初めてみた。。。