xercesc没有正确解析中文字符并创建没有正确结束标记的xml标记

时间:2013-11-14 15:04:38

标签: xerces-c

输入字符串包含“CDR 2324-5 NoCompatibilit頩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 );

'value'是“CDR 2324-5 NoCompatibilit頩nt.nж06.... tri饠par prodkjdl”。

XML生成但没有标记结尾。我收到了以下错误消息,

  

错误:输入在所有已启动的标记结束之前结束。最后的标签   开始是'param'。

如果我删除这3个汉字,那么一切正常。

我正在使用Linux RHEL 62 从XercesVersion.hpp获取的xercesc版本是,

XERCES_VERSION_MAJOR 2
XERCES_VERSION_MINOR 5

同样的事情在windows机器上正常工作。
我怀疑,我可能会使用一些弃用的版本或功能。但我不确定。

请告诉我你的建议。

1 个答案:

答案 0 :(得分:0)

这已经修复,sChar *无法处理中文字符。我已将字符串转换为DOMString。现在一切正常。

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

现在我看到了标签的正确结束。