如何从MSXML :: IXMLDOMElement中获取值数据

时间:2008-12-11 15:09:39

标签: c++ xml msxml

我有一个xml字符串

<grandparent>
   <parent>
       <child>dave</child>
       <child>laurie</child>
       <child>gabrielle</child>
   </parent>
</grandparrent>

我想得到的是父内部的数据原始xml。 我正在使用MSXML

iXMLElm->get_xml(&bStr);

正在返回

<parent>
   <child>dave</child>
   <child>laurie</child>
   <child>gabrielle</child>
</parent>

iXMLElm->get_text(&bStr);

返回 davelauriegabrielle

如果我想获得什么功能?

<child>dave</child>
   <child>laurie</child>
   <child>gabrielle</child>

是否有人了解这些功能的一些好文档?我所看到的一切都是一场噩梦。

3 个答案:

答案 0 :(得分:1)

迭代子节点并手动构建字符串。

答案 1 :(得分:0)

如果您使用的是MSXML,则应该是获取祖父节点的子节点的情况。

所以,如果iXMLElm是祖父母并且它只有一个子节点,那么你可以使用......

 iXMLElm->get_firstChild(&iXMLChildElm)

......然后......

 iXMLChildElm->get_xml(&bStr)

...获取三个child元素。

如果grandparent下有多个项目,您可以使用selectSingleNode来使用XPath来选择具有所需内部XML的节点。

MSDN documentation在接口和可用呼叫上非常合理。

答案 2 :(得分:-1)

如果您使用的是IXMLDOMElement,那么

HRESULT getAttribute(
    BSTR name,
    VARIANT *value);

是'name'是属性名称的方法,'value'是输出参数,它将包含字符串格式的属性值。