はじめまして。
ミロミロと申します。
MSXMLを使ってXMLファイルの出力を行っています。
以下のようにDocumentを作成し、ElementをDocumentにどんどん
追加していき、最後のDocumentのSaveメゾットで出力しています。
IXMLDOMDocumentPtr pDoc = NULL;
hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
// ヘッダ作成
IXMLDOMNodePtr pHeader = pDoc->createProcessingInstruction(xml,
version='1.0' encoding='UTF-8');
pDoc->appendChild(pHeader);
// ルート要素作成
IXMLDOMElementPtr pRootElement = pDoc->createElement(Root);
pDoc->appendChild(pRootElement);
:
:
pDoc->save(F:\\output.xml);
このXMLファイルをテキストで表示すると、ルートノード内が
全て一行で記述されてしまいます。
他のサイトを参考にしたところ、以下の改行文字列を
追加する方法しか載っていませんでした。
例)
pElement->appendChild(pDoc->createTextNode(\n));
改行して出力するにはこのような手法しかないのでしょうか?
開発環境
windows xp
visual C++
msxml4.dll
無いんじゃないですか?
XML的には別に改行が無いといけないというわけではありませんし。
本来の互換性のあるフォーマットでデータを記述するという目的から言えば、
改行なんて必要ないはずです。
改行は人間が見た時に見やすくする為だけの目的で入れるのですから
TextNodeとして追加して特にXML上の意味のあるノードとしては取り扱わない
と言う事なんだと思います。
IMXWriterインターフェイスを使えば可能のようです。
使い方は…… 検索してください。
なるほど、DocumentではなくてWriterを使えと。
工学の為に調べてみようかな。
あうあう。
後学の為に。
PATIO様、Kerry様 回答ありがとうございます。
IMXWriterを調べてみます。
ありがとうございました。