2

Xercesを使用していて、バイナリデータを含むXMLドキュメントをDOMに読み込もうとしています。

<field1>
<data>
[binary data (multiline) here]
</data>
</field1>

<data>次に、各ノードのコンテンツを前処理用の文字列として取得しています。読み取るためのコードは次のとおりです。

DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(xc_DOMImplementation_Name);
DOMLSSerializer* serializer = ((DOMImplementationLS*)impl)->createLSSerializer();
std::wstring ws(serializer->writeToString(node));

<data></data>これはコンテンツなしで返されます。また、CDATAブロックを使用してみましたが、役に立ちませんでした。バイナリデータを複数行のASCIIにスワップアウトすると、正常に機能するようです。最初のバイナリ文字が検出されるとすぐに文字列が切り捨てられると思いますが(おそらく空のタグが返されます)、驚くべきことにヌル文字の削除も機能せず、<data></data>返されました。

Xercesでこれを行うにはどうすればよいですか?unsigned char *を読み込んでそこで操作を実行することにより、ドキュメント全体を前処理することは避けたいと思います。

ありがとう。

4

1 に答える 1

1

バイナリデータをbase64でエンコードすることをお勧めします。apacheのcommons-codecライブラリを確認してください。

XMLはテキスト用に作成されているため、バイナリデータをテキストに変換する必要があります。base64コーデックはこの目的を果たします。

于 2012-12-23T18:36:54.417 に答える