1.先说下我的项目需求
对话框上面有个Clistctrl,用来显示数据。有姓名(name),年级(grade),分数(score 
),学号(id)
在OnBnClickedCreatebtn中::CoInitialize(NULL); //初始化COM
MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMElementPtr xmlRoot;
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(hr))
{
MessageBox(_T("Error"));
return;
}
在OnBnClickedGetcreatebtn()m_XmlList.DeleteAllItems();
MSXML2::IXMLDOMDocumentPtr pDoc;
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(hr))
{
MessageBox(_T("Error!"));
return;
}
pDoc->load("D:\\test.xml");需要动态的添加很多数据,
然后读取出来一年级的,二年级的
以上两个地方不知道如何操作.

解决方案 »

  1.   

    推荐使用CMarkup
    http://wenku.baidu.com/view/553711212f60ddccda38a06c.html
      

  2.   

    反正现在的数据条目少,我是用的CMarkup解析的,因为简单易用...
      

  3.   

    之前都是用tinyXML,现在发现CMarkup还是很好用的.
      

  4.   


    我也在用 CMarkup,很方便。上面那个点错了..
      

  5.   

    给你我整理的文档:
    1.      XML 文档操作1.1.    加载一个XML文档IXMLDOMDocumentPtr xmlDoc;xmlDoc-> Load("Sample.xml");1.2.    加载一个XML数据char*strXml="<Employees><Employeeid=”12345”><Employee_ID>12345</Employee_ID><Name>ZhangBin</Name></Employee></Employees>"xmlDoc-> LoadXML("Sample.xml");1.3.    保存XML文档xmlDoc->Save("Sample.xml"); 2.      XML 数据的查询最常见的XML数据类型有:Element、Attribute、Comment、Text。  Element, 元素节点,指形如<Name>Tom<Name>的节点。它可以包括:Element、Text、Comment, ProcessingInstruction、CDATA、 and EntityReference。  Attribute, 属性节点,指在<Employee id=”12345”>中的粗体部分。Comment,指形如:<!--my comment --> 的节点。Text,指在<Name>Tom<Name>的粗体部分。在XML中,可以用XmlNode对象来参照各种XML数据类型。2.1.    查询已知绝对路径的节点(集)IXMLDOMNodeListPtrnodeList= xmlDoc->SelectNodes(“Company/Department/Employees/Employee”);  或者IXMLDOMNodeListPtrnodeList = xmlDoc ->SelectNodes(“/Company/Department/Employees/Employee”);  以上两种方法可返回一个NodeList对象,如果要返回单个节点可使用SelectSingleNode方法,该方法如果查询到一个或多个节点,返回第一个节点;例如: IXMLDOMNodePtrxmlNode = xmlDoc ->SelectSingleNode(“/Company/Department/Employees/Employee”);2.2.       查询已知相对路径的节点(集)可使用类似于文件路径的相对路径的方式来查询XML的数据
    IXMLDOMNodePtr  xmlNode = xmlDoc ->SelectSingleNode(“Company/Department”) ;IXMLDOMNodePtr  xmlNode1 = xmlNode->SelectNode(“Employees/Employee”);2.3.       查询已知元素名的节点(集)在使用不规则的层次文档时,由于不知道中间层次的元素名,可使用//符号来越过中间的节点,查询其子,孙或多层次下的其他所有元素。例如:
    IXMLDOMNodeListPtr  nodeList = xmlDoc->SelectNodes(“Company//Employee”);2.4.       查询属性(attribute)节点 以上的各种方法都返回元素(element)节点(集),返回属性(attribute),只需要采用相应的方法,在属性名前加一个@符号即可,例如:
    nodeList = xmlDoc->SelectNodes(“Company/Department/Employees/Employee/@id”);nodeList = xmlDoc->SelectNodes(“Company//@id”);2.5.       查询文本(Text)节点使用text()来获取Text节点。xmlNode = xmlDoc->SelectSingleNode(“Company/Department/Deparmt_Name/text()”);2.6.       查询特定条件的节点使用[]符号来查询特定条件的节点。例如:  a. 返回id号为 10102的Employee节点  IXMLDOMNodePtr  xmlNode= xmlDoc->SelectSingleNode(“Company/Department/Employees/Employee[@id=’10102’]”) ;  b. 返回Name为Zhang Qi的Name 节点  IXMLDOMNodePtr  xmlNode = xmlDoc->SelectSingleNode(“Company/Department/Employees/Employee/Name[text()=’ZhangQi’]”) ;  c. 返回部门含有职员22345的部门名称节点  IXMLDOMNodePtr  xmlNode = xmlDoc->SelectSingleNode("Company/Department[Employees/Employee/@id='22345']/Department_Name");2.7.       查询多重模式的节点使用 | 符号可以获得多重模式的节点。例如:IXMLDOMNodeListPtr  nodeList =xmlDoc->SelectNodes(“Company/Department/Department_Name| Company/Department/Manager”);2.8.       查询任意子节点使用*符号可以返回当前节点的所有子节点。IXMLDOMNodeListPtr  nodeList = xmlDoc->SelectNodes(“Company/*/Manager);  或者IXMLDOMNodeListPtr  nodeList= xmlDoc->ChildNodes;1.      XML数据的编辑1.1.    增加一个元素的属性(attribute)节点IXMLDOMNodePtr  attrNode;attrNode = xmlDoc->CreateAttribute("id",Nothing) ;attrNode->InnerXml = "101" ;xmlNode->Attributes->Append(attrNode);1.2.    删除一个元素的属性xmlNode->Attributes->Remove(attrNode);1.3.    增加一个子元素(Element)IXMLDOMNodePtr  childNode;childNode = xmlDoc->CreateElement(Nothing,"ID", Nothing) ;childNode->InnerXml = "101" ;xmlNode->AppendChild(childNode);1.4.    删除一个子元素(Element)xmlNode->RemoveChild(childNode);1.5.    替换一个子元素(Element)xmlNode->ReplaceChild(newChild,oldChild);2.      参考数据
    <?xmlversion="1.0" encoding="UTF-8"?>
      <Company>
       <Departmentid="101">
             <Department_Name>CaiWuBu</Department_Name>
             <Manager>ZhangBin</Manager>
                      <Employees>
                           <Employeeid="12345">
                                <Employee_ID>12345</Employee_ID>
                                <Name>ZhangBin</Name>
                                <Gender>male</Gender>
                           </Employee>
                           <Employeeid="10101">
                                <Employee_ID>10101</Employee_ID>
                                <Name>ZhangQI</Name>
                                <Gender>female</Gender>
                           </Employee>
                           <Employeeid="10102">
                                <Employee_ID>10102</Employee_ID>
                              <Name>Zhang Xia</Name>
                                <Gender>male</Gender>
                           </Employee>
                           <Employeeid="10201">
                                <Employee_ID>10201</Employee_ID>
                                <Name>ZhangChuang</Name>
                                <Gender>male</Gender>
                           </Employee>
                           <Employeeid="10202">
                               <Employee_ID>10202</Employee_ID>
                                <Name>ZhangJun</Name>
                                <Gender>male</Gender>
                           </Employee>
                      </Employees>
                  </Department>
       <Departmentid="102">
             <Department_Name>KaiFaBu</Department_Name>
             <Manager>WangBin</Manager>
             <Employees>
                  <Employeeid="22345">
                      <Employee_ID>22345</Employee_ID>
                      <Name>WangBin</Name>
                      <Gender>male</Gender>
                  </Employee>
                  <Employeeid="20101">
                      <Employee_ID>20101</Employee_ID>
                      <Name>WangQI</Name>
                      <Gender>female</Gender>
                  </Employee>
                  <Employeeid="20102">
                      <Employee_ID>20102</Employee_ID>
                      <Name>WangXia</Name>
                      <Gender>male</Gender>
                  </Employee>
                  <Employeeid="20201">
                      <Employee_ID>20201</Employee_ID>
                      <Name>WangChuang</Name>
                      <Gender>male</Gender>
                  </Employee>
                  <Employeeid="20202">
                      <Employee_ID>20201</Employee_ID>
                      <Name>WangJun</Name>
                      <Gender>male</Gender>
                  </Employee>
             </Employees>
       </Department>
      </Company>
      

  6.   

    tinyxml挺好的
    我封装com经常用它处理xml
      

  7.   

    CMarkup需要引用或者导入什么文件?
    直接用它实例化一个对象提示我未声明