XMLReader で空白データを無視(トリム)して読み込む

DataSetのXmlSerializeで空白が消える - .NET開発者中心(元VB研)会議室 を試してたついでにメモ。
.NET 2.0 以降なら、XmlReaderSettings.IgnoreWhitespace プロパティ (System.Xml) で設定可能です。

こんな感じ

var reader = XmlReader.create(path, new XmlReaderSettings() { IgnoreWhitespace = true });

他の設定項目や規定値もここに載ってます。
XML リーダーの作成


※.NET 1.1 について以下書いていますが、未検証。.NET 2.0 の環境でしか動かしてません。
.NET 1.1 なら、XmlTextReader.WhitespaceHandling プロパティWhitespaceHandling 列挙体 を設定する。

こんな感じ

XmlTextReader reader = new XmlTextReader(path);
reader.WhitespaceHandling = WhitespaceHandling.None;

ちなみに、DataSet の ReadXml DataSet.ReadXml メソッド (XmlReader) に渡す場合には、XmlValidatingReader クラス でラップしてやらないと、WhitespaceHandling のどれを指定しても空白を「有効に」出来ませんでした。

XmlTextReader textReader = new XmlTextReader("./data.xml");
textReader.WhitespaceHandling = WhitespaceHandling.All;
XmlReader reader = new XmlValidatingReader(textReader); // XmlValidatingReader でラップしないと、WhitespaceHandling.All を指定しても空白がトリムされる。
DataSet dataset = new DataSet();
dataset.ReadXml(reader);