<?xml version="1.0" encoding="utf-16" ?> 
 <Standard std_no="CNS 3299-9-2011" name="">
 <Section id="A1" name="标准类别" type="Text">
  <Text page="0" /> 
  </Section>
 </Standard>已知xml文档的路径
CString xmlpath;
如何通过xml文件的读写达到下面的效果:
本人新手,谢谢
 <?xml version="1.0" encoding="utf-16" ?> 
 <Standard std_no=3299-9-2011" name="">
 <Section id="A1" name="类别" type="Text">
  <Text page="0">这个</Text> 
  </Section>
 </Standard>

解决方案 »

  1.   

    额 改错了 原文xml<?xml version="1.0" encoding="utf-16" ?> 
     <Standard std_no=3299-9-2011" name="">
     <Section id="A1" name="类别" type="Text">
      <Text page="0" />
      </Section>
     </Standard>写操作后xml<?xml version="1.0" encoding="utf-16" ?> 
     <Standard std_no=3299-9-2011" name="">
     <Section id="A1" name="类别" type="Text">
      <Text page="0">这个</Text> 
      </Section>
     </Standard>
      

  2.   

    可以用MSXML
    也可以纯粹的文本读写,读出XML文本中的所有数据,遍历查找到  <Text page="0">这里,然后添加内容,保存
      

  3.   


    IXMLDOMDocument2Ptr m_stdxmldoc;
    m_stdxmldoc.CreateInstance("Msxml2.DOMDocument.6.0");
    m_stdxmldoc->async =  VARIANT_FALSE;
    if (!(m_stdxmldoc->load(_variant_t(xmlpath))))
    return false;
    m_stdxmldoc->setProperty("SelectionLanguage","XPath");
    IXMLDOMNodePtr _ptrnode;
    //这句会出错,应该是查询语句的问题
    _ptrnode = m_stdxmldoc->selectSingleNode(_T(".//*[@Section id='A1']")); 
    IXMLDOMElementPtr _ptrelem = (IXMLDOMElementPtr)_ptrnode;
    _ptrelem->setAttribute(_T("Text"),_T("这个"));  我是用这种方法读写的,但是运行的时候会出现问题,请问查询语句应该怎么写,我是初学者,请指教
    谢谢
      

  4.   

    用CMakeup class来解析xml,看看吧,也许对你有用
      

  5.   

    CMarkup xml; xml.AddElem( "ORDER" ); 
    xml.AddChildElem( "ITEM" ); 
    xml.IntoElem(); 
    xml.AddChildElem( "SN", "132487A-J" ); 
    xml.AddChildElem( "NAME", "crank casing" ); 
    xml.AddChildElem( "QTY", "1" ); 
    xml.Save("c:\\UserInfo.xml"); 
    效果如下: 
    <ORDER> 
    <ITEM> 
    <SN>132487A-J </SN> 
    <NAME>crank casing </NAME> 
    <QTY>1 </QTY> 
    </ITEM> 
    </ORDER> 
    浏览特定元素 
    CMarkup xml; 
    xml.Load("UserInfo.xml"); 
    while ( xml.FindChildElem("ITEM") ) 

        xml.IntoElem(); 
        xml.FindChildElem( "SN" ); 
        CString csSN = xml.GetChildData(); 
        xml.FindChildElem( "QTY" ); 
        int nQty = atoi( xml.GetChildData() ); 
        xml.OutOfElem(); 

    来自http://xinxinlx.blog.sohu.com/152050297.html,你参考参考吧!
    不过你自己要先下载CMakeup类
      

  6.   

    问题自己解决了:CString _strquery =  _T(".//*[@Section id='A1']");
    IXMLDOMNodePtr _ptrnode;
    _ptrnode = m_stdxmldoc->selectSingleNode(_T("Standard/Section[@id='A1']"));
    IXMLDOMElementPtr _ptrelem = (IXMLDOMElementPtr)_ptrnode->GetfirstChild();
    _ptrelem.put_text(_T("这个");难得有时间散分了