为什么 TinyXml2 将 XMLDeclaration 放在末尾?

Why does TinyXml2 put XMLDeclaration at the end?

提问人:parsley72 提问时间:10/20/2022 最后编辑:Andrew Truckleparsley72 更新时间:10/23/2022 访问量:290

问:

我正在使用 TinyXml2 v8.0.0 创建一个 XML 缓冲区以发送到 API。该示例包括一个声明。我正在通过以下方式实现这一点:

XMLDocument doc;
doc.InsertEndChild(doc.NewDeclaration());
XMLElement* pRoot = doc.NewElement("Stuff");
doc.InsertFirstChild(pRoot);

NewDeclaration 的文档指出:

如果参数是 ,则使用标准声明。textnull

<?xml version="1.0" encoding="UTF-8"?>

你可以把它看作是 https://github.com/leethomason/tinyxml2/blob/master/xmltest.cpp#L1637 中的测试

但是当我打印出缓冲区时,声明已放置在缓冲区的末尾换行符之后:

<Stuff>
</Stuff>

<?xml version="1.0" encoding="UTF-8"?>

有谁知道为什么会这样?我希望它位于缓冲区的开头,没有换行符。

C++ tinyxml2

评论

0赞 keshlam 10/20/2022
看起来tinyxml在这方面简直是坏了。考虑另一个工具。

答:

2赞 user253751 10/20/2022 #1

大概,那是因为你告诉它把声明作为 ,把元素作为 .EndChildStuffFirstChild

评论

0赞 parsley72 10/20/2022
我之前尝试添加声明,但它没有区别。但是,您的建议有效。也许总是增加开始?InsertFirstChildInsertFirstChild
0赞 user253751 10/20/2022
@parsley72,如果查找它,您会看到 InsertFirstChild 总是添加到开头,而 InsertEndChild 总是添加到结尾。