過去の内容は以下から見れます。よろしければご参照くださいませ。
要素を構築して、ファイルに出力するにはXDocumentかXElementの
Saveメソッドを利用します。Saveメソッドは以下のオーバーロードを持っています。
Save(Stream) Save(String) Save(TextWriter) Save(XmlWriter) Save(Stream, SaveOptions) Save(String, SaveOptions) Save(TextWriter, SaveOptions)
出力先として、Stream, string(ファイルパス), TextWriter, XmlWriterが
指定できます。SaveOptionsは、書式設定などを出力時に行ってほしくない時などに指定します。
以下、サンプルです。
#region LinqSamples-56 /// <summary> /// LINQ to XMLのサンプルです。 /// </summary> /// <remarks> /// LINQ to XMLにてXMLファイルを新規作成するサンプルです. /// </remarks> public class LinqSamples56 : IExecutable { public void Execute() { // // LINQ to XMLにてXMLを新規作成するには // 以下のどちらかのインスタンスを作成する必要がある. // ・XDocument // ・XElement // 通常、よく利用されるのはXElementの方となる. // 保存を行うには、Saveメソッドを利用する. // Saveメソッドには、以下のオーバーロードが存在する. (XElement) // Save(Stream) // Save(String) // Save(TextWriter) // Save(XmlWriter) // Save(Stream, SaveOptions) // Save(String, SaveOptions) // Save(TextWriter, SaveOptions) // var element = new XElement("RootNode", from i in Enumerable.Range(1, 10) select new XElement("Child", i) ); // // Save(Stream) // using (var stream = new MemoryStream()) { element.Save(stream); stream.Position = 0; using (var reader = new StreamReader(stream)) { Console.WriteLine(reader.ReadToEnd()); } } Console.WriteLine("==================================="); // // Save(String) // var tmpFile = Path.GetRandomFileName(); element.Save(tmpFile); Console.WriteLine(File.ReadAllText(tmpFile)); File.Delete(tmpFile); Console.WriteLine("==================================="); // // Save(TextWriter) // using (var writer = new UTF8StringWriter()) { element.Save(writer); Console.WriteLine(writer); } Console.WriteLine("==================================="); // // Save(XmlWriter) // using (var backingStore = new UTF8StringWriter()) { using (var xmlWriter = XmlWriter.Create(backingStore, new XmlWriterSettings { Indent = true })) { element.Save(xmlWriter); } Console.WriteLine(backingStore); } Console.WriteLine("==================================="); // // SaveOptions付きで書き込み. // DisableFormattingを指定すると、出力されるXMLに書式が設定されなくなる. // using (var writer = new UTF8StringWriter()) { element.Save(writer, SaveOptions.DisableFormatting); Console.WriteLine(writer); } } class UTF8StringWriter : StringWriter { public override Encoding Encoding { get { return Encoding.UTF8; } } } } #endregion
実行結果は以下のようになります。
<?xml version="1.0" encoding="utf-8"?> <RootNode> <Child>1</Child> <Child>2</Child> <Child>3</Child> <Child>4</Child> <Child>5</Child> <Child>6</Child> <Child>7</Child> <Child>8</Child> <Child>9</Child> <Child>10</Child> </RootNode> =================================== <?xml version="1.0" encoding="utf-8"?> <RootNode> <Child>1</Child> <Child>2</Child> <Child>3</Child> <Child>4</Child> <Child>5</Child> <Child>6</Child> <Child>7</Child> <Child>8</Child> <Child>9</Child> <Child>10</Child> </RootNode> =================================== <?xml version="1.0" encoding="utf-8"?> <RootNode> <Child>1</Child> <Child>2</Child> <Child>3</Child> <Child>4</Child> <Child>5</Child> <Child>6</Child> <Child>7</Child> <Child>8</Child> <Child>9</Child> <Child>10</Child> </RootNode> =================================== <?xml version="1.0" encoding="utf-8"?> <RootNode> <Child>1</Child> <Child>2</Child> <Child>3</Child> <Child>4</Child> <Child>5</Child> <Child>6</Child> <Child>7</Child> <Child>8</Child> <Child>9</Child> <Child>10</Child> </RootNode> =================================== <?xml version="1.0" encoding="utf-8"?><RootNode><Child>1</Child><Child>2</Child><Child>3</Child><Child>4</Child><Child>5</Child><Child>6</Child><Child>7</Child><Child>8</Child><Child>9</Child><Child>10</Child></RootNode>
SaveOptions.DisableFormattingを指定した場合は、書式設定されずに出力されています。
以下、参照リソースです。
- XElement.Saveメソッド
- XMLの書き出し(XmlWriter)
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場