现在需要用VC写好一个XML的文件,文件里面的内容包括节点之类的已经写好,现在的问题是不知道XML文件的头部说明怎么写
例如
<?xml version="1.0" encoding="utf-8" ?>上面这一段说明是怎么写进去的
本来写XML的部分说明是
         MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMElementPtr xmlRoot;
   
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30)); 问题是如何利用pdc把那段说明写到XML文件的开头谢谢

解决方案 »

  1.   

        不能直接用CFile用 写文件的方法写进入吗?
      

  2.   

    先调用pDoc->loadXML(L"<?xml ... ?><root></root>"),然后再往根元素增加节点
      

  3.   


    void COperateXMLDlg::OnCreate() //Create XML
    {
    // TODO: Add your control notification handler code here
    ::CoInitialize(NULL); //初始化COM
    MSXML2::IXMLDOMDocumentPtr pDoc;
    MSXML2::IXMLDOMElementPtr xmlRoot;
    MSXML2::IXMLDOMNodePtr pXmlNode = NULL;
    MSXML2::IXMLDOMProcessingInstructionPtr pi = NULL;
    if(pDoc)
    {
    pDoc->Release();
    pDoc = NULL;
    }
    HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));//DOMDocument30
    if(!SUCCEEDED(hr))
    {
    MessageBox("Error");
    return;
    }
    pi = pDoc->createProcessingInstruction(_T("xml"),_T("version=\"1.0\" encoding=\"UTF-8\"") );
    if (pi != NULL)
    {
    pXmlNode = pi;
    pDoc->appendChild( pXmlNode );
    pi.Release();
    pXmlNode.Release();

    pDoc->raw_createElement((_bstr_t)(char*)"china", &xmlRoot);
    pDoc->raw_appendChild(xmlRoot, NULL); MSXML2::IXMLDOMElementPtr childNode;
    pDoc->raw_createElement((_bstr_t)(char*)"city", &childNode);
    childNode->Puttext("shanghai");
    childNode->setAttribute("population", "7000");
    childNode->setAttribute("area", "2000");
    xmlRoot->appendChild(childNode); pDoc->raw_createElement((_bstr_t)(char*)"city", &childNode);
    childNode->Puttext("beijing");
    childNode->setAttribute("population", "39999");
    childNode->setAttribute("area", "3322");
    xmlRoot->appendChild(childNode);

    pDoc->save("test.xml"); AfxMessageBox("Save in current directory: test.xml");

    }
      

  4.   

    看看上面的代码就可以知道怎么写xml文件头了。
      

  5.   

    LZ,我刚刚写过一个XML,你可以用xml.AddItem("*","<?xml version=1.0 encoding=utf-8 ?>")或者xml.SetData("("*","<?xml version=1.0 encoding=utf-8 ?>")来实现.
      

  6.   

    改正一下,应该是xml.AddChildItem
      

  7.   

    LZ,我又回去查了一下,应该像这句用:xml.SetDoc("<?xml version=\"1.0\" encoding=\"gb2312\"?>\r\n");
      

  8.   

    8楼的 你那是用的CMarkup类 呵呵要看vc使用CMarkup类解析或生成xml文件
    去看看
    http://download.csdn.net/source/992877 
      

  9.   

    使用CMarkup类
        CMarkup newCreatXML;    //新建的XML
        //生成XML文件
        newCreatXML.SetDoc("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");//添加XML头    
        newCreatXML.AddElem("Root");    //添加根项
        newCreatXML.AddAttrib("son1","hi");    //添加属性
        newCreatXML.AddAttrib("attr" ,"hello");//添加属性
        newCreatXML.Save(xml_name);//保存到为xml文件
      

  10.   

        CMarkup newCreatXML;    //新建的XML
        //生成XML文件
        newCreatXML.SetDoc("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");//添加XML头    
        newCreatXML.AddElem("Root");    //添加根项
        newCreatXML.AddAttrib("son1","hi");    //添加属性
        newCreatXML.AddAttrib("attr" ,"hello");//添加属性
        newCreatXML.Save("myfirstxml.xml");//保存到为xml文件  // 此处要这样改才对  刚刚10楼的此处缺少一个引号
      

  11.   

    3楼 用的 是 MSXML2组建12楼 用的是  CMarkup类
      

  12.   

    ...
    把你的头部说明和内容节点和起来。
    然后
    VARIANT_BOOL  isSuccessful;
    hr = pDoc.loadXML(和起来的内容, &isSuccessful);
    不过这样适合简单的xml,复杂的还是用楼上几位说的CMarkup吧