2010-11-22 2 views
0

У меня есть следующий 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> 

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

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

     } 
+0

Какую библиотеку вы используете? – Baltasarq

+0

@Baltasarq, я использую MSXML6 – Simsons

ответ

0

Глядя в 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.