text.xml<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <Table>
    <姓名>陈锐    </姓名>
    <Sex>男   </Sex>
    <政治面貌>共青团员      </政治面貌>
    <省份>上海   </省份>
    <毕业中学>上海市七宝中学   </毕业中学>
    <出生年月>1991-3-20 </出生年月>
    <寝室号>3-11-313  </寝室号>
    <备注>0         </备注>
  </Table>
  <Table>
    <姓名>陈娅    </姓名>
    <Sex>女   </Sex>
    <政治面貌>共青团员      </政治面貌>
    <省份>湖南   </省份>
    <毕业中学>华容二中      </毕业中学>
    <出生年月>1990-8-18 </出生年月>
    <寝室号>2-3-216   </寝室号>
    <备注>0         </备注>
  </Table>
tess.xml<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <Table>
    <姓名>陈锐    </姓名>
    <Sex>男   </Sex>
    <政治面貌>共青团员      </政治面貌>
    <省份>上海   </省份>
    <毕业中学>上海市七宝中学   </毕业中学>
   </Table>
  <Table>
    <姓名>陈娅    </姓名>
    <Sex>女   </Sex>
    <政治面貌>共青团员      </政治面貌>
    <省份>湖南   </省份>
    <毕业中学>华容二中      </毕业中学>
  </Table>
就是用C#写,用XSLT将tess.xml的格式转换test.xml的格式,没有的值为空就是。

解决方案 »

  1.   

    Xml
    <?xml version="1.0" encoding="gb2312"?>
    <NewDataSet>
      <Table>
        <姓名>陈锐    </姓名>
        <Sex>男   </Sex>
        <政治面貌>共青团员      </政治面貌>
        <省份>上海   </省份>
        <毕业中学>上海市七宝中学   </毕业中学>
        <出生年月>1991-3-20 </出生年月>
        <寝室号>3-11-313  </寝室号>
        <备注>0         </备注>
      </Table>
      <Table>
        <姓名>陈娅    </姓名>
        <Sex>女   </Sex>
        <政治面貌>共青团员      </政治面貌>
        <省份>湖南   </省份>
        <毕业中学>华容二中      </毕业中学>
        <出生年月>1990-8-18 </出生年月>
        <寝室号>2-3-216   </寝室号>
        <备注>0         </备注>
      </Table>
    </NewDataSet>
    xsl<?xml version="1.0" encoding="gb2312"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns:msxsl= "urn:schemas-microsoft-com:xslt ">
      <xsl:template match="/">
        <NewDataSet>
          <xsl:for-each select="/NewDataSet/Table">
            <Table>
              <姓名>
                <xsl:value-of select="姓名"/>
              </姓名>
              <Sex>
                <xsl:value-of select="Sex"/>
              </Sex>
              <政治面貌>
                <xsl:value-of select="政治面貌"/>
              </政治面貌>
              <省份>
                <xsl:value-of select="省份"/>
              </省份>
              <毕业中学>
                <xsl:value-of select="毕业中学"/>
              </毕业中学>
            </Table>
          </xsl:for-each>
        </NewDataSet>
      </xsl:template>
    </xsl:stylesheet>cs
               string strxmlPath = @"c:\b.xml";
                XmlDocument oXMLSource = new XmlDocument();
                oXMLSource.Load(strxmlPath);            string m_strXSLPath = @"c:\a.xsl";
                XslCompiledTransform oXslTransform = new XslCompiledTransform();
                oXslTransform.Load(m_strXSLPath);            MemoryStream oReaderMemory = new MemoryStream(Encoding.GetEncoding("gb2312").GetBytes(oXMLSource.InnerXml));
                XmlReader oReader = XmlReader.Create(oReaderMemory);
                oReader.MoveToContent();            XmlWriterSettings oWriterSettings = new XmlWriterSettings();
                oWriterSettings.OmitXmlDeclaration = false;
                oWriterSettings.Indent = true;
                oWriterSettings.Encoding = Encoding.GetEncoding("gb2312");
                MemoryStream oWriteMemory = new MemoryStream();
                XmlWriter oWriter = XmlWriter.Create(oWriteMemory, oWriterSettings);
                oXslTransform.Transform(oReader, oWriter);            string strResultXML = Encoding.GetEncoding("gb2312").GetString(oWriteMemory.ToArray());            oReaderMemory.Close();
                oReader.Close();
                oWriter.Close();
                oWriteMemory.Close();
    输出  strResultXML
    <?xml version="1.0" encoding="gb2312"?>
    <NewDataSet xmlns:msxsl="urn:schemas-microsoft-com:xslt ">
      <Table>
        <姓名>陈锐    </姓名>
        <Sex>男   </Sex>
        <政治面貌>共青团员      </政治面貌>
        <省份>上海   </省份>
        <毕业中学>上海市七宝中学   </毕业中学>
      </Table>
      <Table>
        <姓名>陈娅    </姓名>
        <Sex>女   </Sex>
        <政治面貌>共青团员      </政治面貌>
        <省份>湖南   </省份>
        <毕业中学>华容二中      </毕业中学>
      </Table>
    </NewDataSet>