2008-12-11 1 views
2

У меня есть Строка XMLКак я могу получить данные о стоимости из-за MSXML :: IXMLDOMElement

<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> 

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

ответ

1

Итерации над дочерними узлами и построение строки вручную.

+0

Бывают ситуации, когда это может быть очень плохая идея. – Owl 2017-05-11 16:46:42

0

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

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

iXMLElm->get_firstChild(&iXMLChildElm) 

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

iXMLChildElm->get_xml(&bStr) 

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

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

MSDN documentation вполне разумен на интерфейсах и звонках.

-1

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

HRESULT getAttribute(
    BSTR name, 
    VARIANT *value); 

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