XMLを改行して出力 – プログラミング – Home

通知
すべてクリア

[解決済] XMLを改行して出力


ミロミロ
 ミロミロ
(@ミロミロ)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

はじめまして。
ミロミロと申します。

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


引用未解決
トピックタグ
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

無いんじゃないですか?
XML的には別に改行が無いといけないというわけではありませんし。
本来の互換性のあるフォーマットでデータを記述するという目的から言えば、
改行なんて必要ないはずです。
改行は人間が見た時に見やすくする為だけの目的で入れるのですから
TextNodeとして追加して特にXML上の意味のあるノードとしては取り扱わない
と言う事なんだと思います。


返信引用
Kerry
 Kerry
(@Kerry)
ゲスト
結合: 20年前
投稿: 192
 

IMXWriterインターフェイスを使えば可能のようです。

使い方は…… 検索してください。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

なるほど、DocumentではなくてWriterを使えと。
工学の為に調べてみようかな。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

あうあう。

後学の為に。


返信引用
ミロミロ
 ミロミロ
(@ミロミロ)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

PATIO様、Kerry様 回答ありがとうございます。

IMXWriterを調べてみます。

ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました