把数据表中的记录导出成下面XML格式的文件:<?xml version=1.0 ?>
<data>
<detail>
<count>3</count>
<row1>
<industry>钢铁</industry>
<zhsl>20892</zhsl>
<zhje>23680</zhje>
<zhzb>0.35</zhzb>
<cksl>12382</cksl>
<ckje>87732</ckje>
<ckzb>0.24</ckzb>
<dksl>9822</dksl>
<dkje>2302</dkje>
<dkzb>0.41</dkzb>
</row1>
<row2>
<industry>机械</industry>
<zhsl>10922</zhsl>
<zhje>68012</zhje>
<zhzb>0.65</zhzb>
<cksl>3828</cksl>
<ckje>9723</ckje>
<ckzb>0.46</ckzb>
<dksl>2922</dksl>
<dkje>12302</dkje>
<dkzb>0.19</dkzb>
</row2>
<row3>
<industry>医药制造</industry>
<zhsl>9292</zhsl>
<zhje>72312</zhje>
<zhzb>0.95</zhzb>
<cksl>9828</cksl>
<ckje>1243</ckje>
<ckzb>0.27</ckzb>
<dksl>2093</dksl>
<dkje>6622</dkje>
<dkzb>0.49</dkzb>
</row3>
</detail>
</data>请问有没有方法用C#程序来写??
我把表中的数据写到一个DATASET里,再用ds.WriteXml()导出,但是格式不对,好郁闷啊!!
大家帮帮我吧(新人)
<data>
<detail>
<count>3</count>
<row1>
<industry>钢铁</industry>
<zhsl>20892</zhsl>
<zhje>23680</zhje>
<zhzb>0.35</zhzb>
<cksl>12382</cksl>
<ckje>87732</ckje>
<ckzb>0.24</ckzb>
<dksl>9822</dksl>
<dkje>2302</dkje>
<dkzb>0.41</dkzb>
</row1>
<row2>
<industry>机械</industry>
<zhsl>10922</zhsl>
<zhje>68012</zhje>
<zhzb>0.65</zhzb>
<cksl>3828</cksl>
<ckje>9723</ckje>
<ckzb>0.46</ckzb>
<dksl>2922</dksl>
<dkje>12302</dkje>
<dkzb>0.19</dkzb>
</row2>
<row3>
<industry>医药制造</industry>
<zhsl>9292</zhsl>
<zhje>72312</zhje>
<zhzb>0.95</zhzb>
<cksl>9828</cksl>
<ckje>1243</ckje>
<ckzb>0.27</ckzb>
<dksl>2093</dksl>
<dkje>6622</dkje>
<dkzb>0.49</dkzb>
</row3>
</detail>
</data>请问有没有方法用C#程序来写??
我把表中的数据写到一个DATASET里,再用ds.WriteXml()导出,但是格式不对,好郁闷啊!!
大家帮帮我吧(新人)
<? xml version="1.0" encoding="gb2132" ?>
<recode>
<person>
<name>jay</name>
<tel country="001" city="01">123</tel>
</person>
<person>
<name>ken</name>
<tel country="" city="02">456</tel>
</person>
</recode>.NET模拟实现SAXSAX(Simple Application for XML)是XML的另外一种程序接口,与DOM相比,有自己的优势和劣势:
·当文档很大的时候,使用DOM会占用很大的空间,比如,100K的文档要占用1M的空间。而SAX则几乎不需要额外的空间。在处理较大的文档时,SAX体现了它最大的优势。
·不必解析整个文档, 在只需小部分内容的时候可以节省系统资源。
·不能做随机访问,只能向后地读取文档信息。
·大文档读取速度不如DOM。
·对于复杂的搜索不能胜任。
具体操作using System;
using System.Xml;
using System.Text;
using System.IO;
namespace xml_sax
{
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
ReadXml();//读取文档
WriteXml();//写文档
//要添加的数据:
Data data = new Data ();
data.Name = "Bill";
data.Tel = "678";
data.City = "003";
AddXml(data);//添加一个数据
Console.WriteLine ("the 2nd read:");
ReadXml();
}
static void GetAttr(XmlReader reader)//读取一个节点及它的属性
{
string name;
name = reader.Name ;//当前节点的名称
for(int i=0;i<reader.AttributeCount /*属性的个数/*;i++)
{
reader.MoveToNextAttribute();//移动到下一个属性
Console.WriteLine("attr:{0}:{1}",
reader.Name,reader.Value/*当前节点的值*/ );
}
reader.Read ();//读取下一个节点
Console.WriteLine("{0}:{1}",name ,reader.Value);
}
static void ReadXml()
{
//建立读文档对象:
XmlTextReader reader = new XmlTextReader ("d:\\person.xml");
while ( reader.Read())//逐个读取节点
{
if(reader.NodeType ==XmlNodeType.Element /*指定节点类型为元素*/)
//可以读所有的节点,包括根结点recode
{
switch(reader.Name)
{
case "name":
GetAttr(reader);//读取节点内容
break;
case "tel" :
GetAttr(reader);
break;
}
}
if (reader.NodeType == XmlNodeType.EndElement//元素尾类型
&& reader.Name == "person")
//到此读完一条数据
{
Console.WriteLine ("_________________________________");
}
}
reader.Close();//关闭文档
}
static void WriteXml()
//此过程从person.xml读数据,写到person1.xml中
{
//建立读写对象:
XmlTextReader reader = new XmlTextReader("d:\\person.xml");
XmlTextWriter writer = new XmlTextWriter("d:\\person1.xml",
Encoding.UTF8);
writer.Formatting = Formatting.Indented ;//设置写入的格式为锯齿型
writer.WriteStartDocument (); //写入文档第一行的XML说明
while(reader.Read ())
{
if(reader.NodeType == XmlNodeType.Element )
{
writer.WriteStartElement (reader.Name);//如:<name>
//写入节点的所有属性:
writer.WriteAttributes (reader,true);
}
else if (reader.NodeType == XmlNodeType.EndElement )
{
writer.WriteEndElement ();//如;</name>
}
else if(reader.NodeType == XmlNodeType.Text /*文本型*/ )
{
writer.WriteString (reader.Value);//写入值
}
}
reader.Close ();
writer.Close ();
}
static void AddXml(Data data)
{
/*添加的方法和C语言中顺序文件的删除方法很相似,
是将原文件中的数据逐一写到临时文件中,然后
在适当的位置写入新数据 */
XmlTextReader reader = new XmlTextReader("d:\\person.xml");
XmlTextWriter writer = new XmlTextWriter("d:\\person1.xml",
Encoding.UTF8);
writer.Formatting = Formatting.Indented ;
writer.WriteStartDocument ();
while(reader.Read ())
{
switch(reader.NodeType )
{
case XmlNodeType.Element:
writer.WriteStartElement (reader.Name );
writer.WriteAttributes (reader,true);
break;
case XmlNodeType.EndElement :
if (reader.Name == "recode")
在文档的末尾加入数据:
{
writer.WriteStartElement ("person");
//写入一个元素:
writer.WriteElementString("name",data.Name);
writer.WriteStartElement("tel");
//写入一个属性
writer.WriteAttributeString
("country",data.Country);
writer.WriteAttributeString("city",data.City);
writer.WriteString (data.Tel);
writer.WriteEndElement();
writer.WriteEndElement();
}
writer.WriteEndElement ();
break;
case XmlNodeType.Text :
writer.WriteString (reader.Value );
break;
}
}
reader.Close ();
writer.Close ();
//用原文件名替换临时文件名
File.Copy ("d:\\person1.xml","d:\\person.xml",true);
File.Delete ("d:\\person1.xml");//删除临时文件 }
}
class Data//数据类
{
public Data()
{
}
public string Name = "",
Tel = "",
Country = "",
City = "";
}
}
输出结果:name:jay
attr:country:001
attr:city:01
tel:123
_____________________________
name:ken
attr:country:
attr:city:02
tel:456
_____________________________
the 2nd read:
name:jay
attr:country:001
attr:city:01
tel:123
_____________________________
name:ken
attr:country:
attr:city:02
tel:456
_____________________________
name:Bill
attr:country:003
attr:city:03
tel:678
_____________________________person.xml:<?xml version="1.0" encoding="utf-8"?>
<recode>
<person>
<name>jay</name>
<tel country="001" city="01">123</tel>
</person>
<person>
<name>ken</name>
<tel country="" city="02">456</tel>
</person>
<person>
<name>Bill</name>
<tel country="" city="003">678</tel>
</person>
</recode>
你想要自己的格式,C#有专们写XML的类库~
查询语句参考,
http://blog.csdn.net/zhzuo/archive/2005/06/28/406290.aspx
调用SqlCommand.ExecuteXmlReader 方法来执行.