Как я могу получить данные значения из MSXML :: IXMLDOMElement

У меня есть строка 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>

Кто-нибудь знает хорошую документацию по этим функциям? Все, что я видел, это связанный кошмар.

11.12.2008 15:09:39
3 ОТВЕТА

Переберите дочерние узлы и создайте строку вручную.

1
11.12.2008 19:26:12
Есть ситуации, когда это может быть действительно плохой идеей.
Owl 11.05.2017 16:46:42

Если вы используете MSXML, это должно быть в случае получения дочернего узла для родительского узла.

Итак, если iXMLElmэто прародитель и у него только один дочерний узел, вы можете просто использовать ...

 iXMLElm->get_firstChild(&iXMLChildElm)

...а потом...

 iXMLChildElm->get_xml(&bStr)

... чтобы получить три childэлемента.

Если под grandparentвами несколько элементов, вы можете использовать selectSingleNodeXPath для выбора узла с нужным вам внутренним XML.

Документация MSDN вполне разумна на интерфейсах и доступных вызовах.

0
11.12.2008 21:59:24

Если вы используете IXMLDOMElement, то

HRESULT getAttribute(
    BSTR name,
    VARIANT *value);

это метод, в котором «name» является именем атрибута, а «value» является выходным параметром, который будет содержать значение атрибута в строковом формате.

-1
7.06.2011 06:09:07