做了个程序,先把数据库存储过程返回的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);急啊,在线等高手解答
代码如下:
_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);急啊,在线等高手解答
如
<root>
其他内容
</root>不能是
<root>
其他内容
</root>
<xxx>
其他内容
</xxx>这样
我的文档现在用一个很简单的测试都不对,我贴出来:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Table>
<序号>1</序号>
<代号>02745711</代号>
<名称>辊子装配</名称>
<每台总数量>0</每台总数量>
<每台总重量>0</每台总重量>
<部分代号 />
<部分数量 />
<部分重量 />
<材料 />
<备注 />
</Table>
</NewDataSet>
XsltSettings setting = new XsltSettings();
xslt.Load("test.xslt");
StringWriter writer = new StringWriter(); xslt.Transform("汇总表22.xml", null, writer);你这后面的代码根本没有使用前面的内容啊,你看哪行报告的错误
代码是我着急粘贴的,可能有点错,我整理下,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文件)。
问题解决了,不是xml文件流读取器的问题,是我在用office工具WML2XSLT生成xslt文件的时候,选择命名空间的问题,我也不知道为什么,就是有一个命名空间不能选,选了生成的xslt后面用起来就有问题,其他的命名空间生成的xslt后面用起来就没有问题,实在是想不明白。
另外xslt还有别的生成办法吗,难道除了这个工具就只能手写?表格太复杂的话赶紧没法手写啊
xsl一般都是手写,因为表现成什么样子,工具很难知道的
这个确实不知道怎么回事,是不是命名空间冲突?结果就是不用那个就能load xslt文件。我的那个表格很复杂,我实在是没有信心手写一个xslt文件出来。我在网上看大家写的一些文章,前面都说的很清楚,吧excel或者word另存成xml后,对我来说最不清楚的一步都没有说清楚:怎么通过这个xml来生成一个xslt文件,这点真是有点郁闷。我今天又试了下吧最后输出的流写到一个本地文件,保存成xml文件,结果word打不开,提示有错误:根据架构,xml数据有错误,我都是用的最简单的结构来测试的,xsd和xml肯定是对应的,不明白为什么。
如果我用excel来画个表格,导入xsd(测试了导入xml数据,没有问题),另存xml,工具生成xslt,然后transform输入到流,保存成xml,可以用excel打开,格式是正确的,但是数据没有导进去,还是有问题。这几天被这个事情折腾的够呛。