我正在尝试使用MSXML4编写XML文件。它工作正常,除非我有一个必须保留的尾随空格的数据元素。写入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->文本”,文本仍然包含尾随空格。当我尝试将其写入到文件:
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>
我想不通在什么时候尾随空间被剥离。
有人可以提供一些见解,可能会发生这种情况以及我如何纠正它?
我无法得到这个工作。我结束了: DataWithTrailingSpace 的空间是存在的,数据和“ ”之间。 –
TERACytE
2010-02-10 21:06:30