[C#] XMLを文字列で読み込んでファイルに書き出す

2019年6月30日

スキーマファイルの仕様が頻繁に変わり、設定を保存してあるXMLが開けなくなるのが煩わしくてXMLコンバータを作ったときのログです。

スポンサーリンク

XMLを文字列として読み込む

// XmlDocument を new する.
XmlDocument xmlDocument = new XmlDocument();

// Xmlファイルの読み込み.
// Load() は戻り値がないので, try - catch で受けます.
try
{
    xmlDocument.Load(filePath);
}
catch (Exception ex)
{
       // error 処理.
} 

Xmlを改行/インデントも含めて文字列にする

// StringWriter を new する.
StringWriter stringWriter = new StringWriter();

// XmlDocument の中身を, StringWriter に書き出す.
xmlDocument.Save(stringWriter);

// 文字列に変換する.
string str = stringWriter.ToString();

// StringWriter を閉じる.
stringWriter.Close(); 

文字列を改行ごとに読み出して、書き出す

// ファイル書き込みのために, StreamWriter を使用する.
StreamWriter streamWriter = new StreamWriter(
    strExportPath,
    false,
    System.Text.Encoding.GetEncoding("utf-8")
);

// 改行ごとに読み出すために, StringReader を使用する.
StringReader stringReader = new StringReader(strXml);

// Peek() を使ってループさせる.
while (-1 < stringReader.Peek())
{
    string strLine = stringReader.ReadLine();
    
    // --- 編集したりする ---.
    // このとき,不要な行を書き出さなかったり,必要な個所に新しく追加したりする.
    
    // Xml へは, WriteLine() で書き出す.
    streamWriter.WriteLine(strLine);
}

// StreamWriter, StringReader を閉じる.
streamWriter.Close(); stringReader.Close(); 

おしまい。

スポンサーリンク

C#, XMLC#, XML

Posted by peliphilo