Xerces替换文本元素中的换行符

时间:2015-10-07 15:47:55

标签: c++ xerces

我有一个程序读取xml文件(FileZilla设置文件),添加用户,然后使用Xerces再次写入文件。

问题是默认情况下,初始欢迎消息元素文本包含此格式&#x0D;&#x0A;的CR + LF,并且Xerces设法以某种方式将其转换为实际的CR + LF,因此文件中的数据来自此< / p>

<Item name="Initial Welcome Message" type="string">%v&#x0D;&#x0A;written by Tim Kosse (tim.kosse@filezilla-project.org)&#x0D;&#x0A;Please visit https://filezilla-project.org/</Item>

到这个

<Item name="Initial Welcome Message" type="string">%v
written by Tim Kosse (tim.kosse@filezilla-project.org)
Please visit https://filezilla-project.org/</Item>

在FileZilla的设置中显示不正确,我假设在任何对服务器的调用中。

我没有自己修改文件的这一部分,只需解析,然后使用此代码由Xerces序列化:

XercesDOMParser parser;

parser.parse(m_settingsPath.c_str());

DOMDocument* doc = parser.getDocument();

// New user added here

DOMImplementation *impl          = DOMImplementationRegistry::getDOMImplementation(L"LS");
DOMLSSerializer   *theSerializer = ((DOMImplementationLS*)impl)->createLSSerializer();

DOMConfiguration* serializerConfig=theSerializer->getDomConfig();

if (serializerConfig->canSetParameter(XMLUni::fgDOMWRTFormatPrettyPrint, true))
    serializerConfig->setParameter(XMLUni::fgDOMWRTFormatPrettyPrint, true);

return theSerializer->writeToURI(doc, L"C:\\work\\temp\\test.xml");

我认为这可以通过修改解析器或序列化器中的某些设置来修复(我不知道问题的来源)但我不知道该设置是什么。

0 个答案:

没有答案