- - PR -
Xerces C++ 出力されるファイルの内容について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-07-18 15:22
初めて投稿させて頂きます。
どうぞよろしくお願いします。 ライブラリ:Xerces C++ v2.7.0 OS:Linux(SUSE) XMLファイルに出力する際、元のXMLファイルと若干違って出力されてしまいます。 なぜなのでしょうか?? (元) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE aaaaa SYSTEM "xxxxx.dtd"> <aaaaa version="1.0"> <bbbbb> <ccccc>hogehoge</ccccc> <ddddd>hugahuga</ddddd> </bbbbb> </aaaaa> (出力後) <?xml version="1.0" encoding="UTF-8" standalone="no" ?><!DOCTYPE aaaaa SYSTEM "xxxxx.dtd"><aaaaa version="1.0"> <bbbbb> <ccccc>hogehoge</ccccc> <ddddd>hugahuga</ddddd> </bbbbb> </aaaaa> 違いは、 1.最初のxmlタグに、standalone="no"が付加されます。 2.<aaaaa version="1.0">前の改行がなくなってしまいます。 以下がソースの抜粋です。 皆様、どうぞ、ご教授お願いします。 // DOMパーサオブジェクトを生成 XercesDOMParser* parser = new XercesDOMParser(); parser->setValidationScheme(XercesDOMParser::Val_Always); parser->setDoNamespaces(true); // DOMWriterオブジェクト(シリアライザー)を生成 DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(XMLString::transcode("LS")); DOMWriter* theSerializer = ((DOMImplementationLS*)impl)->createDOMWriter(); // 出力時のエンコーディングを設定 theSerializer->setEncoding(XMLString::transcode("UTF-8")); parser->parse("fromXML.xml"); // ドキュメントオブジェクトを取得 DOMDocument* doc = parser->getDocument(); // ルート要素を取得 DOMElement* root = doc->getDocumentElement(); // ウォーカを生成 DOMTreeWalker* walker = doc->createTreeWalker(root, DOMNodeFilter::SHOW_ALL, '\\0', true); ウォーカのループで、内容を編集(ここは、省略します。) // XMLファイルに書き出す XMLFormatTarget* fileFormatTarget = new LocalFileFormatTarget("toXML.xml"); theSerializer->writeNode(fileFormatTarget, *doc); 以上です。 どうぞよろしくお願いします。 |
|
投稿日時: 2006-07-18 16:50
第9回 Standaloneと究極の外部非依存文書
http://www.atmarkit.co.jp/fxml/rensai/xmlwomanabou09/learning-xml09.html xml のメガネを通して見ると「同じ」ですから、改行の有無はどうとも言えません。 |
|
投稿日時: 2006-07-19 00:50
MMXさん、お返事ありがとうございます。
ご紹介頂いた、サイトをみました。 Standaloneについてだいたい理解することができました。 今回の場合、元のXMLファイルに、standalone="no" が必要だったということでよいでしょうか? 改行の件ですが、XMLとして処理するには、特に必要ないのですが、見た目で問題になってしまいます。 何とか、制御することはできないのでしょうか?? |
|
投稿日時: 2006-07-19 11:22
>今回の場合、元のXMLファイルに、standalone="no" が必要だったということでよいでしょうか?
xml パーサーが読み取った結果はそうだった。 検証yesで使用した DTD から発生した性質ですから、指定しなくともいいのでは。 standalone="yes" に変えても、読込みスピード差はないでしょう。 >見た目で問題 xml範囲外 の性質 ですから、後加工とか、出力オプション探しになります。 DOM木をメモり上に構築した時点で、元テキストの空白類は処理済になっています。 ------ ソース八苦に挑戦してもいいかも。 [ メッセージ編集済み 編集者: MMX 編集日時 2006-07-19 11:25 ] |
|
投稿日時: 2006-07-21 13:57
MMXさん、お返事ありがとうございます。
>見た目で問題 >xml範囲外 の性質 ですから、後加工とか、出力オプション探しになります。 そうなんですか。。。 出力されるXMLファイルは、XMLとしては問題ないので、現状、よしとすることにしました。 後加工は、余裕があったら、やりたいですが。。。 理想は、出力オプションです。いろいろ、試してみましたが。。。 今後とも、何かよい情報ありましたら、よろしくお願いします。 |
1