msxml3.dll 保存空格

公司的业务里我需要用到 MSXML3.dll 来对 XML 文件进行读写,打开一个 XML 进行读取,然后还要在另一个地方将这个 XML 保存下来,有的时候一个 XML 节点里的数据可能是 空格,但我发现好像只有空格的节点读取为空

MSXML2::IXMLDOMDocumentPtr pDOMDoc;
pDOMDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
pDOMDoc->preserveWhiteSpace = true;   // false 也试过
...
_bstr_t bstr = pElem->GetfirstChild()->Gettext();  // XML 文件中对应的这里是空格,但是读取后结果不对

上面代码中 bstr 的结果通过 VS 查看,显示 m_wstr=0x0000027ba8537ed8L"" m_str=0x00000000000000 m_RefCount=1
等号后面是内存地址,可能不对,不重要,主要是 m_wstr 为空, m_str 直接是 NULL。
这个该怎么解决?这些空格是必要的


_bstr_t bstr = pElem->GetfirstChild()->GetnodeValue();

这个方法不行,我现在用的是转义的方法来保存空格和‘&’之类的特殊字符,读取的时候判断后再转义一下保存到变量中,保存的时候再转义一次再保存,目前这个方式是可以用了。

您可以尝试使用 GetnodeValue() 方法来获取节点的值,而不是使用 Gettext() 方法。GetnodeValue() 方法可以获取节点的值,包括空格等空白字符。例如:

_bstr_t bstr = pElem->GetfirstChild()->GetnodeValue();

如果您仍然无法获取空格字符,请检查 XML 文件中该节点是否真的包含空格字符。如果该节点确实包含空格字符,但是仍然无法获取,请检查您的代码是否正确加载了 XML 文件。