我想用Poco :: XML :: DOMWriter创建一个XML文件。 但如果Node内部是变形金刚(ä,ö,ü等),则Writer会停止写入XML文件。
这是一个有效的例子:
int main() {
AutoPtr<Document> pDoc = new Document;
AutoPtr<Element> pRoot = pDoc->createElement("root");
AutoPtr<Element> pElement = pDoc->createElement("Element");
AutoPtr<Text> pText = pDoc->createTextNode("Example text");
AutoPtr<Element> pElement1 = pDoc->createElement("Element1");
AutoPtr<Text> pText2 = pDoc->createTextNode("Text with umlaut: Übermorgen gibt es Regen");
AutoPtr<Element> pElement2 = pDoc->createElement("Element2");
AutoPtr<Text> pText3 = pDoc->createTextNode("Text without");
pElement->appendChild(pText);
pElement1->appendChild(pText2);
pElement2->appendChild(pText3);
pRoot->appendChild(pElement);
pRoot->appendChild(pElement1);
pRoot->appendChild(pElement2);
pDoc->appendChild(pRoot);
DOMWriter writer;
UTF8Encoding utf8Enc;
writer.setNewLine("\n");
writer.setEncoding("UTF-8", utf8Enc);
writer.setOptions(Poco::XML::XMLWriter::PRETTY_PRINT);
writer.writeNode("D:\\test.xml", pDoc);
}
如果我调试此代码,pDoc
变量包含我定义的整个XML
结构。
但是在文件系统上,XML文件只包含这个:
<root>
<Element>Example text</Element>
<Element1>Text with umlaut:
第二个元素未完全写入,最后一个元素丢失。
如何配置DOMWriter
以支持特殊键?
XML应如下所示:
<root>
<Element>Example text</Element>
<Element1>Text with umlaut: Übermorgen gibt es Regen</Element1>
<Element2>Text without</Element2>
</root>