Как прочитать атрибут и значение элемента - PullRequest
0 голосов
/ 22 ноября 2010

У меня есть следующий XML:

<?xml version="1.0" encoding="utf-8" ?>
<lastconnectedServers>
   <Server ip="172.24.18.240" domain="MyDomain">
        <SharedFolder name="MyShared" type="FTP"/>
        <SharedFolder name="Share1" type ="CIFS"/>
        <SharedFolder name="Share2" type ="both"/>
   </Server>
</lastconnectedServer>

Мне нужно прочитать значения атрибутов и узлов.Я могу получить количество дочерних узлов, но не знаю, как получить значение:

CComPtr<IXMLDOMDocument> pIxmlDOC = NULL;
    CComPtr<IXMLDOMParseError> pIxmlDOM = NULL;
    CComPtr<IXMLDOMElement> pIxmlServerElement;
    CComPtr<IXMLDOMNode> pIxmlServerNode,pIxmlLastConnectedServerNode;
    CComPtr<IXMLDOMNodeList> pIXmlNodeChildList = NULL;


    IXMLDOMNode* pInsertedNode;

    BSTR bstrXML = NULL;
    VARIANT vXMLSource;
    VARIANT_BOOL bIsSuccess;
    HRESULT hr = CoInitialize(NULL);

    LONG lChildCount = 0;

    CHK_HR(CreateAndInitDOM(&pIxmlDOC));    
    VariantFromString(L"stocks.xml",vXMLSource);

    pIxmlDOC->load(vXMLSource,&bIsSuccess);

    pIxmlDOC->get_childNodes(&pIXmlNodeChildList);

        pIXmlNodeChildList->get_length(&lChildCount);

        for(int i = 0; i < lChildCount; i++)
        {
            CComPtr<IXMLDOMNamedNodeMap> pIXMLNodeMap;
            CComPtr<IXMLDOMNode> pIXMLChildNode;

            pIXmlNodeChildList->get_item(i,&pIXMLChildNode);
            pIXMLChildNode->get_attributes(&pIXMLNodeMap);

        }

Ответы [ 2 ]

0 голосов
/ 22 ноября 2010

Поиск в MSDN:

http://msdn.microsoft.com/en-us/library/ms761386

Кажется, что IXMLDOMNode имеет текстовый указатель, который указывает на содержимое узла:

text* : Represents the text content of the node or the concatenated text representing the node and its descendants. Read/write.
0 голосов
/ 22 ноября 2010

Быстрый поиск по MSDN сэкономил бы вам много времени:

HRESULT getNamedItem(
    BSTR name,
    IXMLDOMNode **namedItem);

См .: http://msdn.microsoft.com/en-us/library/ms767592(v=VS.85).aspx

...