CMarkup跟tinyxml貌似都不支持XPATH(tinyxpath没用过),Xerces C++貌似也不支持?(非Xalan),
难道只能用MSXML是不是只有4.0以上才支持XPATH啊?大家推荐下。

解决方案 »

  1.   


    #import <msxml3.dll>
    MSXML2::IXMLDOMDocument2Ptr docPtr;
    //init
    if(FAILED(CoInitialize(NULL)))
    {
    //初始化失败
    }if(FAILED(docPtr.CreateInstance(__uuidof(MSXML2::DOMDocument30))))
    {
    //初始化失败
    }
    docPtr->async = false;  //同步
    docPtr->setProperty("ServerHTTPRequest",true);  //HTTP请求 
    HRESULT lr = docPtr->load("http://www.aaa.com/a.xml");
    docPtr->setProperty("SelectionLanguage", "XPath"); //支持XPathMSXML2::IXMLDOMNodeListPtr pXMLDomNodeList = NULL;
    pXMLDomNodeList = docPtr->selectNodes("//crop"); //XPath表达式
    int count = pXMLDomNodeList->length;for(int i = 0 ; i < count ; i++)
    {
    MSXML2::IXMLDOMNodePtr pXMLDomNode = pXMLDomNodeList->item[i];
    // pXMLDomNode->attributes->getNamedItem("id")->text);获取属性
    MSXML2::IXMLDOMNodeListPtr pXMLDomChildNodes = pXMLDomNode->childNodes;//获取子结点
    int clength = pXMLDomChildNodes->length;
    for(int j = 0 ; j < clength ; j++)
    {
    MSXML2::IXMLDOMNodePtr pXMLDomChildNode = pXMLDomChildNodes->item[j];
    if(wcscmp(L"NodeName" , pXMLDomChildNode->GetnodeName()) == 0)
    {
    //系列操作
    }
    else if(wcscmp(L"NodeName2" , pXMLDomChildNode->GetnodeName()) == 0)
    {
    //系列操作
    }
    }
    CoUninitialize();
      

  2.   

    那个For那里漏了一个结束括号楼主应该知道哈