0

入力文字列に「CDR 2324-5 No Compatibilit.nt.nж06....tri饠par prodkjdl」が含まれています。

予想される xml は次のとおりです。

<param>
<name>comments</name>
<value>CDR   2324-5  No Compatibilit頩nt. nж06....tri饠par prodkjdl</value>
</param>

次の関数を使用して、文字列をxmlに挿入しています。

 DOM_Text newNode = document.createTextNode("");
 newNode.setNodeValue( (const sChar*) value );
 element.appendChild( newNode );

ここで、「値」は「CDR 2324-5 No Compatibilit.nж06....trijapar prodkjdl」です。

XML は生成されますが、末尾のタグはありません。次のエラーメッセージが表示されました。

エラー: 開始されたすべてのタグが終了する前に、入力が終了しました。最後に開始されたタグは「param」でした。

これらの 3 つの漢字を削除すると、すべて正常に動作します。

Linux RHEL 62 を使用しています
。XercesVersion.hpp から取得した xercesc バージョンは、

XERCES_VERSION_MAJOR 2
XERCES_VERSION_MINOR 5

Windowsマシンでも同じことがうまくいきます。
廃止されたバージョンまたは機能を使用する可能性があると思われます。しかし、よくわかりません。

あなたの提案を教えてください。

4

1 に答える 1

0

これは修正されました。sChar* は漢字を処理できませんでした。文字列を DOMString に変換しました。今はすべて正常に動作します。

DOMString val = DOMString( value.c_str() );
DOM_Text newNode = document.createTextNode("");
newNode.setNodeValue( val );
element.appendChild( newNode );

今、私はタグの適切な終わりを見ています。

于 2013-11-15T09:36:16.863 に答える