gpt4 book ai didi

c++ - 写入 XML 去除尾随空格

转载 作者:太空宇宙 更新时间:2023-11-04 12:26:26 25 4
gpt4 key购买 nike

我正在尝试使用 MSXML4 编写 XML 文件。它工作正常,除非我有一个必须保留尾随空格的数据元素。

给定以下插入新元素的代码:

const _bstr_t k_Parent      (ToBSTR("ParentNode"));
const _bstr_t k_Child (ToBSTR("ChildNode"));
const _bstr_t k_Data (ToBSTR("DataWithTrailingSpace "));
const _bstr_t k_Namespace (ToBSTR("TheNameSpace"));

MSXML2::IXMLDOMDocument2Ptr m_pXmlDoc;

m_pXmlDoc->async = VARIANT_FALSE;
m_pXmlDoc->validateOnParse = VARIANT_FALSE;
m_pXmlDoc->resolveExternals = VARIANT_FALSE;
m_pXmlDoc->preserveWhiteSpace = VARIANT_TRUE;

MSXML2::IXMLDOMNodePtr pElement = m_pXmlDoc->createNode(NODE_ELEMENT, k_Child, k_Namespace);
MSXML2::IXMLDOMNodePtr pParent = m_pXmlDoc->selectSingleNode(k_Parent);

pElement->put_text (k_Data);

MSXML2::IXMLDOMNodePtr pNewChild = pParent->appendChild(pElement);

如果我选中“pNewChild->text”,文本仍然包含尾随空格。当我尝试将其写入文件时:

std::string xml (static_cast<std::string>(m_pXmlDoc->xml));

std::ofstream file("output.xml");

file << xml << std::endl;

file.flush();
file.close();

输出是:

<ParentNode>
<ChildNode>DataWithTrailingSpace</ChildNode>
</ParentNode>

代替(注意“DataWithTrailingSpace”后面的额外空间):

<ParentNode>
<ChildNode>DataWithTrailingSpace </ChildNode>
</ParentNode>

我无法弄清楚尾随空格在什么时候被剥离。

有人可以提供一些见解,说明可能发生这种情况的地方以及我如何纠正它吗?

最佳答案

如果您需要保留空格,那么您应该通过 createCDATASection() 或类似方法使用 CDATA 部分。

关于c++ - 写入 XML 去除尾随空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2240269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com