1

tinyxml2 を使用していますが、システムは xml をタブではなくインデント用に 4 つのスペースで保存します。これを読み取るプログラムはタブのみを読み取り、エラーが発生します。とにかく、4つのスペースの代わりにタブを使用するようにtinyxml2を変更できますか? 私が試してみました

    XMLDocument xmlDoc(true, PRESERVE_WHITESPACE);

しかし、それは何も変えていません

4

1 に答える 1

1

XMLDocument::SaveFile(const char* filename, bool compact=false) (またはXMLDocument::SaveFile(FILE* fp, bool compact=false))を呼び出してxmlドキュメントを保存していると思います 。

これらのメソッドは、XMLPrinter要素のインデントに 4 つのスペースを書き込むクラス (メソッドXMLPrinter::PrintSpace) を使用します。パラメータを に渡すことtrueで、インデントと改行の書き込みを抑制することができます。あるアプリケーションから別のアプリケーションに xml を直接渡す場合は、コンパクトが優先されます。おそらく、あなたのプログラムはこの形式で xml を受け入れるでしょう。compactSaveFile

インデント文字を変更するには、オーバーロードXMLPrinterして独自の実装を提供しPrintSpace、オーバーロードXMLDocumentして XMLPrinter を使用する必要があります。

XML ドキュメント内の要素間の空白 (改行とインデント) には意味がなく、準拠するパーサーによって無視される (無視する必要がある) ことに注意してください。これは、人間が読みやすいようにするためだけのものです。

PRESERVE_WHITESPACE/COLLAPSE_WHITESPACEは、要素のテキスト ノード内での空白文字の処理方法にのみ影響します。

于 2016-12-21T00:36:58.920 に答える