C++ 写入XML带尾随空格

C++ 写入XML带尾随空格,c++,xml,whitespace,msxml,C++,Xml,Whitespace,Msxml,我正在尝试使用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

我正在尝试使用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();
std::stringxml(静态转换(m_-pXmlDoc->xml));
std::of流文件(“output.xml”);

文件您应该用
和#xa0。这样,您的空白应该保持不变

编辑
看来这并没有解决你的问题。那么你可能想看看这些网站:

您应该将空格替换为
和#xa0。这样,您的空白应该保持不变

编辑
看来这并没有解决你的问题。那么你可能想看看这些网站:

如果需要保留空白,则应通过
createCDATA节()
或类似方式使用CDATA节。

如果需要保留空白,则应通过
createCDATA节()
或类似方式使用CDATA节。

。不要在Internet Explorer中预览XML。它隐藏了尾随空格。改用记事本。

谜团已解开。不要在Internet Explorer中预览XML。它隐藏了尾随空格。改用记事本。

我无法让它工作。我最终得到:DataWithTrailingSpace ;数据和“ ;”之间的空间就在那里。我无法让它工作。我最终得到:DataWithTrailingSpace ;在数据和“ ;”之间存在空间。虽然这保留了空间,但它也注入了“DataWithTrailingSpace”。那么您的接收系统不支持XML。在XML中,“DataWithTrailingSpace”与“DataWithTrailingSpace”完全相同,虽然这保留了空间,但它也注入了“DataWithTrailingSpace”。那么您的接收系统不支持XML。在XML中,“DataWithTrailingSpace”与“”完全相同
<ParentNode>
    <ChildNode>DataWithTrailingSpace</ChildNode>
</ParentNode>
<ParentNode>
    <ChildNode>DataWithTrailingSpace </ChildNode>
</ParentNode>