Я пытаюсь написать XML-файл с использованием 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-> текст», текст по-прежнему содержит замыкающий пробел. Когда я пытаюсь писать в файл:
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