Xml读写(使用XDocument)

写了两个扩展方法。一个把DataTable转为XElement,一个把XElement转为DataTable。

主要用于存储少量数据。本来想弄个全面的增删改查,但我处理的数据量小,也没必要了。

总之,这样就能把xml文件的内容读到DataTable中,然后再DataTable中一通各种变形,最后再写到xml文件中了。

DataTable转XElement测试

XElement转DataTable测试

最后是两个方法的源码

 1 public static DataTable ToDataTable(this XDocument xDoc, string sheetName)
 2         {
 3             //拿到表【sheetName】
 4             var curSheet = from sheet in xDoc.Root.Elements() where sheet.Attribute("SheetName").Value == sheetName select sheet;
 5             var dt = new DataTable();
 6             var head = from ele in curSheet.Elements() where ele.Name == "Head" select ele;
 7             //循环写dt表头名,字段类型
 8             foreach (var ele in head.Elements())
 9             {
10                 var typeString = ele.Attribute("Type").Value;
11                 dt.Columns.Add(ele.Value, Type.GetType(typeString));
12             }
13             var data = from ele in curSheet.Elements() where ele.Name == "Data" select ele;
14             //循环写dt中的数据
15             foreach (var ele in data.Elements())
16             {
17                 dt.Rows.Add(ele.Elements().Select(s => s.Value).ToArray());
18             }
19             return dt;
20         }
21
22         public static XElement ToXmlSheet(this DataTable dt,string sheetName)
23         {
24             //添加表元素
25             var aNewSheet = new XElement("XmlSheet", new XAttribute("SheetName",sheetName),
26                             new XElement("Head"),
27                             new XElement("Data")
28                             );
29             //写Head元素
30             var head = aNewSheet.Element("Head");
31             foreach (DataColumn column in dt.Columns)
32             {
33                 head.Add(new XElement("Field", column.ToString(), new XAttribute("Type", column.DataType.ToString())));
34             }
35             //写Data元素
36             var data = aNewSheet.Element("Data");
37             foreach (DataRow row in dt.Rows)
38             {
39                 var curRow = new XElement("Row");
40                 var cells = row.ItemArray.Select(c => new XElement("Cell", c));
41                 foreach (var cell in cells)
42                 {
43                     curRow.Add(cell);
44                 }
45                 data.Add(curRow);
46             }
47             return aNewSheet;
48         }

时间: 2024-10-14 04:07:21

Xml读写(使用XDocument)的相关文章

XML 读写(XmlDocument、XPathNavigator、XDocument)

内存中的 XML 处理 基于流的 XML 处理提供了最小的负载,但也只提供了最小的灵活性.在很多 XML 处理场景里,你不会在这么低的层次下工作. 对内存中的 XML 的处理则更加方便,但没有单一.标准的方式.如下所有的类都支持对 XML 的读取和导航: XmlDocument :它是 XML 数据的标准化接口,但对时间要求比较多. XPathNavigator :它提供比 XML DOM 稍快.更有效的模型,并增强了一些搜索功能,但不能修改或保存 XML . XDocument :为处理 XM

网站的配置文件XML读写

网站的配置信息一般都写入到XML中,以下是简单的对xml的读写操作,仅供参考. 读操作: XmlDocument xmlDoc = new XmlDocument(); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true;//忽略文档里面的注释 var path = HttpContext.Server.MapPath("../../SiteConfig/Siteconfig.x

XML读写

private string fileName = HttpContext.Current.Server.MapPath("~/Student.xml"); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GetAllStudent(); } } private void GetAllStudent() { ddlStudent.Items.Clear(); XmlDocument do

unity3d里的XML读写示例

关于U3D里面XML读写办法,谢谢刘老师的指导(刘国栋) 代码: /**Project name:*    *Author:*    *Version:*    *Description:*    */ using UnityEngine;using System.Collections;using System.Xml;using System.Xml.Serialization;using System.IO;using System.Text;using System.Security.C

【Python】Python XML 读写

class ACTIVE_FILE_PROTECT_RULE_VIEW(APIView): renderer_classes = (JSONRenderer, BrowsableAPIRenderer) parser_classes = (JSONParser,) def post(self, request): from datetime import datetime from django.utils import timezone from django.utils.timezone i

XML 读写-JDOM和DOM4j

一.JDOM的XML读写 1.JDOM的XML 读 1 import java.io.File; 2 import java.io.IOException; 3 import java.util.Iterator; 4 import java.util.List; 5 import org.jdom.Document; 6 import org.jdom.Element; 7 import org.jdom.JDOMException; 8 import org.jdom.input.SAXBu

xml读写Demo

主要包括: 使用xmlDocument的方式读写xml文档,读取xml字符串. 使用XDocument的方式读写xml文档,读取xml字符串. 将xml中的数据递归加载到winform的Treeview中. 代码下载地址:http://files.cnblogs.com/files/FangZhaohu/Xml%E8%AF%BB%E5%86%99%E7%BB%83%E4%B9%A0.zip 以后需要补充: XDocument与Linq XmlDocument与Xpath xml的一些其他知识.

oracle blob mybatis xml读写

最近项目用到了对oracle大字段的读写,小白在这里记录下,方便自己以后用到,也希望对其他朋友有一点帮助. 由于项目的原因,这里的blob只是对xml报文的读写,并没有涉及到保存图片等,因此下面涉及的方法可能不全面,如有需要请自行查看其它大神博客. 一.读blob 这里对blob的读是直接在数据库建了一个函数Blob_To_Varchar ,这样方便项目里面其它地方用到查询blob: CREATE OR REPLACE Function Blob_To_Varchar (Blob_In In B

C# XML读写实例

一.使用System.Xml 实例:完成如下格式配置文件的读写操作: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE doc[]> <root> <DatabaseInfo> <HostName>127.0.0.1</HostName> <DatabaseName>orcl</DatabaseName> <UserN