如题目所示,我在VC++中使用DOM创建XML文件,所有信息都在一行中,如何实现缩进?
谢谢兄弟姐妹们指点。

解决方案 »

  1.   

    是想格式化xml文件吗?vs08 好像有这项功能, ctrl+k  ctrl+d
      

  2.   

    是想格式化xml文件吗?vs08 好像有这项功能, ctrl+k  ctrl+f
      

  3.   

    请参考一下,通过改变g_szStyle的内容可改变存储样式。TCHAR g_szStyle[] = _T("<?xml version=\"1.0\"?>\n")
    _T("<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">\n")
    _T("<xsl:output method = \"xml\"  omit-xml-declaration = \"yes\" indent = \"yes\"/>\n")
    _T("  <xsl:template match=\"/ | @* | node()\">\n")
    _T("    <xsl:copy>\n")
    _T("      <xsl:apply-templates select=\"@* | node()\"/>\n")
    _T("    </xsl:copy>\n")
    _T("  </xsl:template>\n")
    _T("</xsl:stylesheet>\n"); bool SaveXMLFile(IXMLDOMDocument &xmlDoc, LPCTSTR szFilePathName)
    {
    BOOL bStyleOutput = FALSE;
    IXMLDOMDocument xmlDocStyle; COleException error;
    if( xmlDocStyle.CreateDispatch(_T("Msxml2.DOMDocument"),&error))
    {
    xmlDocStyle.SetAsync(FALSE); if(xmlDocStyle.loadXML(g_szStyle))
    {
    IHYXMLDOMDocument xmlDocResult;
    if( xmlDocResult.CreateDispatch(_T("Msxml2.DOMDocument"),&error))
    {
    xmlDocResult.SetAsync(FALSE);
    xmlDocResult.SetValidateOnParse(TRUE);
    VARIANT vt;
    VariantInit(&vt);
    vt.vt = VT_DISPATCH;
    vt.pdispVal = xmlDocResult.m_lpDispatch;
    xmlDoc.transformNodeToObject(xmlDocStyle,vt);
    xmlDocResult.save(COleVariant(szFilePathName));
    bStyleOutput = TRUE;
    }
    }
    } if(bStyleOutput == FALSE)
    {
    xmlDoc.save(COleVariant(szFilePathName));
    } return true;
    }
      

  4.   

    并非VC6的bug, \r\n在XML定义中属于空格,而空格在XML的定义里属于文本内容的东西,是不能随便去掉的和添加的。添加或者去掉空格都改变了原来XML原始意义。