今回は、ストリームを指定して読み込みを行うXElement.Loadメソッドについてメモ。
過去の内容は以下から見れます。よろしければご参照くださいませ。
文字列以外の方法で、読み込みを行う場合
Loadメソッドを利用します。LoadメソッドはXDocument, XElementの
両方で定義されています。書式は以下の通り。
public static XElement Load( Stream stream ) public static XElement Load( string uri ) public static XElement Load( TextReader textReader ) public static XElement Load( XmlReader reader ) public static XElement Load( Stream stream, LoadOptions options ) public static XElement Load( string uri, LoadOptions options ) public static XElement Load( TextReader textReader, LoadOptions options ) public static XElement Load( XmlReader reader, LoadOptions options )
大別すると
- URIを指定して読み込み
- ストリームを指定して読み込み
となります。今回はストリームを指定しての読み込みについて。
以下、サンプルです。
#region LinqSamples-54 /// <summary> /// LINQ to XMLのサンプルです。 /// </summary> /// <remarks> /// XElement.Loadを利用したストリーム読み込みのサンプルです. /// </remarks> public class LinqSamples54 : IExecutable { public void Execute() { // // XElement.Loadには、文字列からロードする他に // ストリーミングを指定して内容をロードすることもできる。 // // メソッドは複数のオーバーロードを持っており、以下の書式となる. // Load(Stream) // Load(TextReader) // Load(XmlReader) // Load(Stream, LoadOptions) // Load(TextReader, LoadOptions) // Load(XmlReader, LoadOptions) // 大別すると、ストリームのみを指定するものとオプションも指定できるものに分かれる. // // // Load(Stream)のサンプル. // -- File.OpenReadで返るのはFileStream // FileStreamはStreamのサブクラス. // XElement element = null; using (var stream = File.OpenRead("xml/Books.xml")) { element = XElement.Load(stream); } Console.WriteLine(element); Console.WriteLine("============================================="); // // Load(TextReader)のサンプル // -- StreamReaderはTextReaderのサブクラス. // element = null; using (var reader = new StreamReader("xml/Data.xml")) { element = XElement.Load(reader); } Console.WriteLine(element); // // Load(XmlReader)のサンプル. // element = null; using (var reader = XmlReader.Create("xml/PurchaseOrder.xml", new XmlReaderSettings { IgnoreWhitespace = true, IgnoreComments = true })) { element = XElement.Load(reader); } Console.WriteLine(element); } } #endregion
実行結果は以下のようになります。
============================================= ...省略 Garghentini, Davide XML Developer's Guide Computer 44.95 2000-10-01 An in-depth look at creating applications with XML. ============================================= 7.25 A 3 24.50 ...省略Ellen Adams 123 Maple Street Mill Valley CA 10999 USA ...省略
以下、参照リソースです。
- XElementクラス
- XElement.Loadメソッド
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場