做了个程序,先把数据库存储过程返回的datatable写入xml,然后用流来操作,用XslCompiledTransform配合已经做好的xslt模板来解析xml文件,生成一个模板文件规定的格式的文件。
代码如下:
            _dt_汇总表数据表.WriteXml(mes_xml文件流, XmlWriteMode.IgnoreSchema);
            mes_xml文件流.Seek(0, SeekOrigin.Begin);        //将文件流中的指针设置到流的头
            XmlReader xr_xml文件流读取 = new XmlTextReader(mes_xml文件流);
            XmlReader xml文件流读取器 = new XmlTextReader("汇总表22.xml");
            XslCompiledTransform xslt = new XslCompiledTransform();
            XsltSettings setting = new XsltSettings();
            xslt.Load("test.xslt");
            StringWriter writer = new StringWriter();            xslt.Transform("汇总表22.xml", null, writer);急啊,在线等高手解答

解决方案 »

  1.   

    ,提示文档没有根元素就是说xml文件中只能有一个根元素

    <root>
    其他内容
    </root>不能是
    <root>
    其他内容
    </root>
    <xxx>
    其他内容
    </xxx>这样
      

  2.   


    我的文档现在用一个很简单的测试都不对,我贴出来:
    <?xml version="1.0" standalone="yes"?>
    <NewDataSet>
      <Table>
        <序号>1</序号>
        <代号>02745711</代号>
        <名称>辊子装配</名称>
        <每台总数量>0</每台总数量>
        <每台总重量>0</每台总重量>
        <部分代号 />
        <部分数量 />
        <部分重量 />
        <材料 />
        <备注 />
      </Table>
    </NewDataSet>
      

  3.   

    XslCompiledTransform xslt = new XslCompiledTransform();
      XsltSettings setting = new XsltSettings();
      xslt.Load("test.xslt");
      StringWriter writer = new StringWriter();  xslt.Transform("汇总表22.xml", null, writer);你这后面的代码根本没有使用前面的内容啊,你看哪行报告的错误
      

  4.   


    代码是我着急粘贴的,可能有点错,我整理下,XML文件内容就是我粘贴出来的那个
      _dt_汇总表数据表.WriteXml(mes_xml文件流, XmlWriteMode.IgnoreSchema);
      mes_xml文件流.Seek(0, SeekOrigin.Begin); //将文件流中的指针设置到流的头
      XmlReader xml文件流读取器 = new XmlTextReader(mes_xml文件流);
     
      XslCompiledTransform xslt = new XslCompiledTransform();
      XsltSettings setting = new XsltSettings();
      xslt.Load("test.xslt");
      StringWriter writer = new StringWriter();
      xslt.Transform(xml文件流读取器, null, writer); //执行这一步的时候就报一个异常,未处理的xmlException其中的"test.xslt"是我已经做好的(我是用word画个表格,引入xschema后另存成xml,然后用office工具WML2XSLT.EXE 通过另存生成的xml来生成xslt文件)。
      

  5.   

    你的这个xml文件流读取器有问题
      

  6.   


    问题解决了,不是xml文件流读取器的问题,是我在用office工具WML2XSLT生成xslt文件的时候,选择命名空间的问题,我也不知道为什么,就是有一个命名空间不能选,选了生成的xslt后面用起来就有问题,其他的命名空间生成的xslt后面用起来就没有问题,实在是想不明白。
    另外xslt还有别的生成办法吗,难道除了这个工具就只能手写?表格太复杂的话赶紧没法手写啊
      

  7.   

    命名空间不会导致这样的错误吧。只要符合xml格式的良好格式要求,报出来的错误不应该是格式错误的。
    xsl一般都是手写,因为表现成什么样子,工具很难知道的
      

  8.   


    这个确实不知道怎么回事,是不是命名空间冲突?结果就是不用那个就能load xslt文件。我的那个表格很复杂,我实在是没有信心手写一个xslt文件出来。我在网上看大家写的一些文章,前面都说的很清楚,吧excel或者word另存成xml后,对我来说最不清楚的一步都没有说清楚:怎么通过这个xml来生成一个xslt文件,这点真是有点郁闷。我今天又试了下吧最后输出的流写到一个本地文件,保存成xml文件,结果word打不开,提示有错误:根据架构,xml数据有错误,我都是用的最简单的结构来测试的,xsd和xml肯定是对应的,不明白为什么。
    如果我用excel来画个表格,导入xsd(测试了导入xml数据,没有问题),另存xml,工具生成xslt,然后transform输入到流,保存成xml,可以用excel打开,格式是正确的,但是数据没有导进去,还是有问题。这几天被这个事情折腾的够呛。