2010-11-22 14 views
0

J'ai le code XML suivant:Comment lire la valeur d'attribut et de l'élément

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

je dois lire les valeurs d'attributs et le noeud. Je suis en mesure d'obtenir le nombre de nœuds enfants, mais pas sûr comment obtenir la valeur:

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

Quelle bibliothèque utilisez-vous? – Baltasarq

+0

@Baltasarq, j'utilise MSXML6 – Simsons

Répondre

0

Recherche dans MSDN:

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

Il semble que IXMLDOMNode a le pointeur de texte, qui pointe vers le contenu du noeud:

text* : Represents the text content of the node or the concatenated text representing the node and its descendants. Read/write.