C# 怎么把数据库转换成固定格式的XML文件。。。

lizhuang0032 2014-12-17 04:53:32
各位大侠:
我想把一个数据库文件转成一个XML文件。。。要求转换出的格式为这样子的:
<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="终端接口XML Schema-2.0.xsd" SN="" Version="3.0" License="123">
<Events>
<!--采购入库,未绑定其他附加功能-->
<Event Name="PurchaseWareHouseIn" MainAction="WareHouseIn">
<ActionMaping>
<Action Name="WareHouseIn">
<ActionData>Code</ActionData>
<ActionData>CorpOrderID</ActionData>
<ActionData>Actor</ActionData>
<ActionData>ActDate</ActionData>
<ActionData>WrongCode</ActionData>
<ActionData>UpperCorpOrderID</ActionData>
<ActionData>FromCorpID</ActionData>
</Action>
</ActionMaping>
<DataMaping>
<MetaData Name="Code" Type="string" />
<MetaData Name="CorpOrderID" Type="string" />
<MetaData Name="Actor" Type="string" />
<MetaData Name="ActDate" Type="Date" />
<MetaData Name="WrongCode" Type="Boolean" />
<MetaData Name="UpperCorpOrderID" Type="string" />
<MetaData Name="FromCorpID" Type="string" />
</DataMaping>
<DataField>
<Data Code="48913645" CorpOrderID="201408242001" Actor="1111" ActDate="2014-08-24 05:34:09" WrongCode="false" />
<Data Code="48913646" CorpOrderID="201408242001" Actor="1111" ActDate="2014-08-24 05:34:09" WrongCode="false" />
<Data Code="48913647" CorpOrderID="201408242001" Actor="1111" ActDate="2014-08-24 05:34:09" WrongCode="false" />
<Data Code="48913648" CorpOrderID="201408242001" Actor="1111" ActDate="2014-08-24 05:34:09" WrongCode="false" />
<Data Code="48913649" CorpOrderID="201408242001" Actor="1111" ActDate="2014-08-24 05:34:09" WrongCode="false" />
<Data Code="48913641" CorpOrderID="201408242001" Actor="1111" ActDate="2014-08-24 05:34:09" WrongCode="false" />
</DataField>
</Event>
</Events>
</Document>


可是我通过Dataset的WirteXML直接转出来不是这种格式。。。本人刚做这一块,不太懂,有没有大侠能给指点一下啊。。。
我转换出来是这样的?
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<ScanBarCode>
<ID>641</ID>
<ScanBarID>KB3239040V11DC0270</ScanBarID>
<ScanOrderTime>2013-12-20T08:29:15+08:00</ScanOrderTime>
<ScanUser>admin</ScanUser>
<ScanMFlag>1</ScanMFlag>
<ScanRight>1</ScanRight>
<ScanBarM>KB3239040V11DC0270</ScanBarM>
<OrderID>0000029061</OrderID>
<OrderType>0</OrderType>
<Remark>test</Remark>
</ScanBarCode>
<ScanBarCode>
<ID>642</ID>
<ScanBarID>KH3042013V11PTDC0319</ScanBarID>
<ScanOrderTime>2013-12-20T08:29:20+08:00</ScanOrderTime>
<ScanUser>admin</ScanUser>
<ScanMFlag>0</ScanMFlag>
<ScanRight>1</ScanRight>
<ScanBarM>KB3239040V11DC0270</ScanBarM>
<OrderID>0000029061</OrderID>
<OrderType>0</OrderType>
<Remark>test</Remark>
</ScanBarCode>

现在怎么样转换成上面的那种格式?谢谢各位了!!!
...全文
320 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjq 2014-12-21
  • 打赏
  • 举报
回复
最简单的,自己拼字符串……
wind_cloud2011 2014-12-20
  • 打赏
  • 举报
回复
你意思是怎么读取?
lizhuang0032 2014-12-18
  • 打赏
  • 举报
回复
XSD这种文件怎么用啊,确实以前没用过XML,让各位哥哥姐姐见笑了。。。
lizhuang0032 2014-12-18
  • 打赏
  • 举报
回复
谢谢各位大侠,XML模板是不是XSD文件? 比如:这俩个,这种怎么使用? <?xml version="1.0" encoding="UTF-8"?> <!-- edited with XMLSpy v2007 sp1 (http://www.altova.com) by jincheng (EMBRACE) --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="productList"> <xs:annotation> <xs:documentation>导出企业产品药品信息响应</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:element name="product"> <xs:complexType> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:element name="subType"> <xs:complexType> <xs:sequence> <xs:element name="resProdCodes"> <xs:complexType> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:element name="resCode"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="codeVersion" type="xs:string"/> <xs:attribute name="codeLevel" type="xs:string"/> <xs:attribute name="pkgRatio" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="typeNo" type="xs:string"/> <xs:attribute name="authorizedNo" type="xs:string"/> <xs:attribute name="type" type="xs:string"/> <xs:attribute name="spec" type="xs:string"/> <xs:attribute name="packageSpec" type="xs:string"/> <xs:attribute name="packUnit" type="xs:string"/> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="productCode" type="xs:string"/> <xs:attribute name="productName" type="xs:string"/> <xs:attribute name="comment" type="xs:string"/> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="version" type="xs:string" use="optional" default="3.0"/> </xs:complexType> </xs:element> </xs:schema> 、、------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?> <!-- edited with XMLSpy v2006 sp2 U (http://www.altova.com) by W3CHINA.ORG (W3CHINA.ORG) --> <!-- edited with XMLSPY v2004 rel. 2 U (http://www.xmlspy.com) by eleven (zxgj) --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <!--文档根节点document--> <xs:element name="Document"> <xs:complexType> <xs:sequence> <xs:element name="Events" type="EventsType"/> </xs:sequence> <xs:attribute name="SN" type="xs:string" use="optional"/> <xs:attribute name="License" type="xs:string" use="optional"/> <xs:attribute name="Version" type="xs:string" use="optional"/> <xs:attribute name="Comment" type="xs:string" use="optional"/> <!--二级节点事件节点Events,类型EventsType--> </xs:complexType> </xs:element> <!--一级节点Events类型定义--> <xs:complexType name="EventsType"> <xs:sequence> <xs:element name="Event" type="EventType" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="Comment" type="xs:string"/> </xs:complexType> <xs:complexType name="MetaDataDesc"> <xs:sequence> <xs:element name="MetaData" type="DataDescType" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="DataDescType"/> <xs:simpleType name="ParentType"> <xs:restriction base="xs:string"> <xs:enumeration value="Yes"/> <xs:enumeration value="No"/> </xs:restriction> </xs:simpleType> <!--二级节点 Event类型定义--> <xs:complexType name="EventType"> <xs:sequence> <xs:element name="ActionMapping" type="ActionMapingType"/> <xs:element name="DataMaping" type="DataMapType"/> <xs:element name="DataDesc" minOccurs="0"> <xs:complexType> <xs:complexContent> <xs:extension base="DataDescType"> <xs:sequence> <xs:element ref="MetaDataDesc" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="DataField"> <xs:complexType> <xs:complexContent> <xs:extension base="DataFieldType"> <xs:sequence> <xs:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="Name" type="EventList"/> <xs:attribute name="PreAction" type="ActionList" use="optional"/> <xs:attribute name="MainAction" type="ActionList"/> <xs:attribute name="AfterAction" type="ActionList" use="optional"/> <xs:attribute name="Comment" type="xs:string" use="optional"/> </xs:complexType> <!--二级节点ActionMaping类型定义--> <xs:complexType name="ActionMapingType"> <xs:sequence> <xs:element name="Action" type="ActionType" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <!--三级节点Action类型定义--> <xs:complexType name="ActionType"> <xs:sequence> <xs:element name="ActionData" type="MetaDataList" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="Name" type="ActionList"/> </xs:complexType> <!--二级节点DataMap类型定义--> <xs:complexType name="DataMapType"> <xs:sequence> <xs:element name="MetaData" type="MetaDataType" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <!--三级节点MetaData类型定义--> <xs:complexType name="MetaDataType"> <xs:attribute name="Type" type="DataTypeList" use="optional"/> <xs:attribute name="Length" type="xs:short" use="optional"/> <xs:attribute name="Name" type="MetaDataList" use="required"/> </xs:complexType> <!--二级节点数据区DataField类型定义--> <xs:complexType name="DataFieldType"/> <xs:element name="MetaDataDesc"> <xs:complexType> <xs:sequence> <xs:element ref="MetaDataDesc" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="MetaName" type="MetaDataList" use="required"/> <xs:attribute name="IsParent" type="xs:string" use="required"/> </xs:complexType> </xs:element> <!--可选动作列表--> <xs:simpleType name="ActionList"> <xs:restriction base="xs:string"> <xs:enumeration value="WareHouseIn"/> <xs:enumeration value="WareHouseOut"/> <xs:enumeration value="CodeReplace"/> <xs:enumeration value="CodeDestory"/> </xs:restriction> </xs:simpleType> <!--可选事件列表--> <xs:simpleType name="EventList"> <xs:restriction base="xs:string"> <xs:enumeration value="PurchaseWareHouseIn"/> <xs:enumeration value="SalesWareHouseOut"/> <xs:enumeration value="ReturnWareHouseIn"/> <xs:enumeration value="ReturnWareHouseOut"/> <xs:enumeration value="ProduceWareHouseIn"/> <xs:enumeration value="ProduceWareHouseOut"/> <xs:enumeration value="AllocateWareHouseIn"/> <xs:enumeration value="AllocateWareHouseOut"/> <xs:enumeration value="ReworkWareHouseOut"/> <xs:enumeration value="DestoryWareHouseOut"/> <xs:enumeration value="CheckWareHouseOut"/> <xs:enumeration value="DirectAllocateWareHouseOut"/> <xs:enumeration value="CodeReplace"/> <xs:enumeration value="CodeDestory"/> </xs:restriction> </xs:simpleType> <!--可选基础数据列表--> <xs:simpleType name="MetaDataList"> <xs:restriction base="xs:string"> <xs:enumeration value="CorpOrderID"/> <xs:enumeration value="FromCorpID"/> <xs:enumeration value="ToCorpID"/> <xs:enumeration value="OwnerCorpID"/> <xs:enumeration value="Actor"/> <xs:enumeration value="ActDate"/> <xs:enumeration value="ActData "/> <xs:enumeration value="CorpBatchNo"/> <xs:enumeration value="ProduceDate"/> <xs:enumeration value="Code"/> <xs:enumeration value="SourceCode"/> <xs:enumeration value="ReplaceCode"/> <xs:enumeration value="WrongCode"/> <xs:enumeration value="UpperCorpOrderID"/> </xs:restriction> </xs:simpleType> <!--基础数据可选数据类型列表--> <xs:simpleType name="DataTypeList"> <xs:restriction base="xs:string"> <xs:pattern value="String|Date|Number|DateTime|Boolean"/> </xs:restriction> </xs:simpleType> </xs:schema>
wind_cloud2011 2014-12-17
  • 打赏
  • 举报
回复

  XDocument doc = new XDocument();            
            XElement root = new XElement("Document");
            XElement child0 = new XElement("Events");
            root.Add(child0);
            XElement child = new XElement("Event",new XAttribute("Name", "PurchaseWareHouseIn"),new XAttribute("MainAction", "WareHouseIn"));            
            child0.Add(child);

            XElement member = new XElement("ActionMaping");
            child.Add(member);

            XElement member1 = new XElement("Action");
            member.Add(member1);
            
            XElement info = new XElement("ActionData", "Code");
            member1.Add(info);
            XElement info1 = new XElement("ActionData", "CorpOrderID");
            member1.Add(info1);
            XElement info2 = new XElement("ActionData", "Actor");
            member1.Add(info2);
            XElement info3 = new XElement("ActionData", "ActDate");
            member1.Add(info3);
         

            XElement member2 = new XElement("DataMaping");
            child.Add(member2);
            XElement info11 = new XElement("MetaData", new XAttribute("Name", "Code"), new XAttribute("Type", "string"));
            member2.Add(info11);
            XElement info12 = new XElement("MetaData", new XAttribute("Name", "CorpOrderID"), new XAttribute("Type", "string"));
            member2.Add(info12);


            XElement member3 = new XElement("DataField");
            child.Add(member3);
            XElement info21 = new XElement("Data", new XAttribute("Code", "48913645"), new XAttribute("CorpOrderID", "201408242001"), new XAttribute("Actor", "1111"), new XAttribute("ActDate", "2014-08-24 05:34:09"), new XAttribute("WrongCode", "false"));
            member3.Add(info21);
            XElement info22 = new XElement("Data", new XAttribute("Code", "48913646"), new XAttribute("CorpOrderID", "201408242001"), new XAttribute("Actor", "1111"), new XAttribute("ActDate", "2014-08-24 05:34:09"), new XAttribute("WrongCode", "false"));
            member3.Add(info22);
           
            doc = new XDocument(root);
            doc.Save(Application.StartupPath + "\\Test1.xml");


wind_cloud2011 2014-12-17
  • 打赏
  • 举报
回复

 XDocument doc = new XDocument();            
            XElement root = new XElement("Document");
            XElement child0 = new XElement("Events");
            root.Add(child0);
            XElement child = new XElement("Event",new XAttribute("Name", "PurchaseWareHouseIn"),new XAttribute("MainAction", "WareHouseIn"));            
            root.Add(child);

            XElement member = new XElement("ActionMaping");
            child.Add(member);

            XElement member1 = new XElement("Action");
            member.Add(member1);
            
            XElement info = new XElement("ActionData", "Code");
            member1.Add(info);
            XElement info1 = new XElement("ActionData", "CorpOrderID");
            member1.Add(info1);
            XElement info2 = new XElement("ActionData", "Actor");
            member1.Add(info2);
            XElement info3 = new XElement("ActionData", "ActDate");
            member1.Add(info3);
         

            XElement member2 = new XElement("DataMaping");
            child.Add(member2);
            XElement info11 = new XElement("MetaData", new XAttribute("Name", "Code"), new XAttribute("Type", "string"));
            member2.Add(info11);
            XElement info12 = new XElement("MetaData", new XAttribute("Name", "CorpOrderID"), new XAttribute("Type", "string"));
            member2.Add(info12);        
           
            doc = new XDocument(root);
            doc.Save(Application.StartupPath + "\\Test1.xml");


ajaxfeifei 2014-12-17
  • 打赏
  • 举报
回复
只能通过遍历去做。 如果你要考虑灵活性,就把遍历做的好一点,通过配置xml模板生成相关数据。后期维护只需要维护XML模板就行了。
exception92 2014-12-17
  • 打赏
  • 举报
回复
遍历datarow,是用linq to xml(XElement) 自定义节点名称并取值保存。
霖雨 2014-12-17
  • 打赏
  • 举报
回复
最简单的思路,既然你都获取到DataTable了,遍历一边自己拼成这样的格式;
一、应用场景与出发点 同一个系统中,为了解决不同的客户可能需要设计不同的单据打印模板,实现此方法可能是: 1、设计不同的自带RDLC报表文件,根据当前客户加载不同的报表并打印 2、GDI+绘图 和 打印组件 ,不同的客户创建不同的绘图XML格式的模板内容 3、其他第三方组件 主要对比一下前两种方法,第一种方法不好之处在于,不灵活,开发者必须地每个客户制订一个报表,不推荐采用。第二种方法,修改对应的模板内容就可以了, 模板内容可以是Xml文件,也可以是存放在数据库中的Xml格式字符串。推荐采用这种方法。然后这种方法的也有一个棘手问题 :如何让用户快速、方便地设计打印模板,本示例就是为了解决这个问题。 二、实现思路与原理 功能概要:设计一个界面,支持用户自由添加 要打印的项,文本,直线,图片 等,并且可以方便改变打印项的 字体、颜色、粗细、位置,设计时支持效果预览。 技术要点:GDI+绘图、拖动控件、XML解析、自定义控件 三、相关类介绍 绘图工具类:DrawHelper 实现 xml格式模板 与 打印项 之间进行互相转换,在目标画板中绘制 拖动工具类:WinHelper 实现控件的鼠标拖动,键盘移动 自定义控件:用于显示文字的文本框 TextBoxExt、用于显示直线的标签 LabelExt 主窗体代码:用于用户操作,添加,删除,编辑,打印项 详细介绍请参照我的博文:http://de.cel.blog.163.com/blog/static/51451236201472215450939/

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧