<GRAMMAR>
<RULE NAME="A">
<RULE NAME="B">
<RULE NAME="C">
</GRAMMAR>如何快速选择NAME为"B"的节点;
如果用SelectNode函数 无法区分三个RULE,请问有什么解决方法。
谢谢

解决方案 »

  1.   

    SelectNodeList...GRAMMAR/RULE[@NAME='B']
      

  2.   

    依次去取节点,如果节点为RULE 节点属性为NAME,那么就去取属性NAME的值,然后进行判断。
    可以用MSXML2的相关函数去取。
      

  3.   


            CString strPath = _T("F:\\configure.xml");
    ::OleInitialize(NULL);
    MSXML2::IXMLDOMDocumentPtr pDoc = NULL;
    MSXML2::IXMLDOMElementPtr pRoot = NULL;
    MSXML2::IXMLDOMNodePtr pNode = NULL;
    VARIANT_BOOL isSuccessful = VARIANT_FALSE;
    hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument60));
    pDoc->load(strPath.GetBuffer());
    pDoc->get_documentElement(&pRoot);
    pRoot->raw_selectSingleNode(_T("HotkeyConfigure/Hotkey[@id='1']"), &pNode);
    CString strXml = (LPWSTR)pNode->Getxml();