想删除XML文件中某一项数据,EXPAT或者其他的方法也可以,有没有办法可以删除XML文件中某一项?谢谢。

解决方案 »

  1.   

    能否提供SAX的方法? 因为我本来的项目已经在用SAX了。DOM应该可以实现,但SAX不知道行不行?有哪位帮忙
    回答一下啊。
      

  2.   

    SAX不行吧,SAX只是解析XML,并不能操作
    除非你在SAX的处理事件中重新生成一个XML
      

  3.   

    谢谢你的回复,请问一下:我的XML文件是:
    <xml>
    <book>
    <name>侏罗纪</name>
    <price>50</price>
    <book>
    <book>
    <name>VC编程</name>
    <price>58</price>
    <book>
    </xml>如果删除第一个结点比较好删除,但如果
    我想把以下结点删除掉,应该怎么样删除:
    <book>
    <name>VC编程</name>
    <price>58</price>
    <book>
    ?
    另外我每次执行完程序之后:
    调用:
    CoUninitialize都会程序出错,有没有人知道是怎么回事的? 谢谢.
      

  4.   

    MSXML2::IXMLDOMDocumentPtr   pDoc;    
      int ret                       = 0;
      //创建DOMDocument对象 
      HRESULT   hr   =   pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));  
      if(!SUCCEEDED(hr))    
      {    
      MessageBox("无法创建DOMDocument对象,请检查是否安装了MS   XML   Parser   运行库!");    
      return;
      }
      ret=pDoc->load("c:\\bookstore.xml");
      if(0==ret)
      {
      AfxMessageBox("无法加载文件");
      return;
      }
     
            MSXML2::IXMLDOMElementPtr pDocElement=pDoc->GetdocumentElement();
            MSXML2::IXMLDOMElementPtr pElement=pDocElement->selectSingleNode("book"); 
    i=0;
    while(i<2)
    {
    pElement=pElement->GetnextSibling();
    //pElement=pDocElement->selectSingleNode("book");
    i++;
    }
    //MSXML2::IXMLDOMElementPtr   pDocElement=pDoc->GetdocumentElement();  
    pDocElement->removeChild (pElement); 
                       pDoc->save("c:\\bookstore.xml");
    //pElement->Release();
    //pDocElement->Release();
      //pDoc->Release();请问代码最后面三行需要不需要Rlease()的,我一Release程序就出问题了。
      

  5.   

    在网上找到资料,为安全起见应该是:
    pElement.Release();
    pDocElement.Release();
    pDoc.Release();各位有没有不同意见的?
    能否帮忙提出? 谢谢。
      

  6.   

    <xml> 
    <book> 
    <name>侏罗纪 </name> 
    <price>50 </price> 
    <book> 
    <book> 
    <name>VC编程 </name> 
    <price>58 </price> 
    <book> 
    </xml> 
    1. 首先得到节点列表 MSXML2::IXMLDOMNodeListPtr spNodeList =  spDoc->selectNodes("//book")
    2. 遍历节点列表
       for(i = 0; i < node长度 ;  i++  )
    {
       得到list项  spNodeItem
       if(i == 2)
    {
    spNodeItem->getparentnode()->removechild(spnodeitem);
    }
    }
      

  7.   

    使用DOM或者tinyxml解析出来xml树结构
    就可以对其进行你想要的操作了!!!