XML 与DB交互
第一:DB 数据通过Datatable 或者 Datareader 写xml文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//方法一 :通过Dt.WriteXml string sql = "select * from sys_subject"; DataTable dt= HQLHelper.ExecuteDataTable(sql); string s = System.AppDomain.CurrentDomain.BaseDirectory; s = s + "\\Config\\" + "a.xml"; dt.WriteXml(s);//将读出来的内容写到一个xml文件中 //方法二:通过XDocument 类 //我们创建的xml文件的根节点是subject,节点属性是id,属性值是subjectInfo XDocument doc = new XDocument(new XElement("subject", new XAttribute("id", "subjectInfo"))); XElement root = doc.Root; foreach (DataRow dr in dt.Rows) { //从根节点下创建元素XElement对象,即展示在页面上就是创建元素,该元素的属性有s_id,值为dr["s_id"]中的值。 //创建的该元素的子元素为s_name,文本值为dr["s_name"]的值 XElement ele = new XElement("subjectlist", new XAttribute("s_id", dr["s_id"]), new XElement("s_name", dr["s_name"])); doc.Root.Add(ele); } //将所创建的一系列节点保存在s.xml文件中 doc.Save(s);
写入后的文件:
注意: 根节点、子节点及元素名称对应。
第二:xml文件 导入到DB
1.加载 xml文件
//构造一个xml文档对象
XDocument provinceDoc = XDocument.Load(filename);
//获取文档对象的根节点
XElement provinceroot = provinceDoc.Root;
//获取根节点下的所有元素,返回的是一个IEnumerable类型的 IEnumerable<XElement> eles = provinceroot.Elements();
2.循环遍历,作为参数写入 insert 参数
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
foreach (var xElement in eles) { string sid=""; //获取xml属性名称为s_id的属性值 //如果xml属性名称为s_id的属性的属性值为null时进行的操作 if (xElement.Attribute(s_id) == null) { sid= "0"; } else {sid= xElement.Attribute(s_id).Value; } }
注意:属性名称 、属性值及元素。
参考:http://www.cnblogs.com/hanwenhuazuibang/archive/2013/05/09/3067842.html