我正在嘗試使用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