Web开发之C#:(9)C#常用类库4:XDocument

作者:陆金龙    发表时间:2016-07-21 00:38   


4.XDocument

4.1 XDocument类相关方法

 

名称

说明

Add(Object)

将指定的内容添加为此XContainer的子级。(继承自XContainer。)

Add(Object[])

将指定的内容添加为此XContainer的子级。(继承自XContainer。)

AddAfterSelf(Object)

紧跟在此节点之后添加指定的内容。(继承自XNode。)

AddAfterSelf(Object[])

紧跟在此节点之后添加指定的内容。(继承自XNode。)

AddAnnotation

将对象添加到此XObject的批注列表。(继承自XObject。)

AddBeforeSelf(Object)

紧邻此节点之前添加指定的内容。(继承自XNode。)

AddBeforeSelf(Object[])

紧邻此节点之前添加指定的内容。(继承自XNode。)

AddFirst(Object)

将指定的内容作为此文档或元素的第一个子级添加。(继承自XContainer。)

AddFirst(Object[])

将指定的内容作为此文档或元素的第一个子级添加。(继承自XContainer。)

Ancestors()

返回此节点的上级元素的集合。(继承自XNode。)

Ancestors(XName)

返回此节点的经过筛选的上级元素的集合。集合中只包括具有匹配XName的元素。(继承自XNode。)

Annotation(Type)

从此XObject获取指定类型的第一个批注对象。(继承自XObject。)

Annotation<T>()

从此XObject获取指定类型的第一个批注对象。(继承自XObject。)

Annotations(Type)

获取此XObject的指定类型的批注集合。(继承自XObject。)

Annotations<T>()

获取此XObject的指定类型的批注集合。(继承自XObject。)

CreateReader()

创建此节点的XmlReader。(继承自XNode。)

CreateReader(ReaderOptions)

使用readerOptions参数指定的选项创建XmlReader。(继承自XNode。)

CreateWriter()

创建可用于将节点添加至XContainerXmlWriter。(继承自XContainer。)

DescendantNodes

按文档顺序返回此文档或元素的子代节点集合。(继承自XContainer。)

Descendants()

按文档顺序返回此文档或元素的子代元素集合。(继承自XContainer。)

Descendants(XName)

按文档顺序返回此文档或元素的经过筛选的子代元素集合。集合中只包括具有匹配XName的元素。(继承自XContainer。)

Element

获取具有指定XName的第一个(按文档顺序)子元素。(继承自XContainer。)

Elements()

按文档顺序返回此元素或文档的子元素集合。(继承自XContainer。)

Elements(XName)

按文档顺序返回此元素或文档的经过筛选的子元素集合。集合中只包括具有匹配XName的元素。(继承自XContainer。)

ElementsAfterSelf()

按文档顺序返回此节点后的同级元素集合。(继承自XNode。)

ElementsAfterSelf(XName)

按文档顺序返回此节点后经过筛选的同级元素的集合。集合中只包括具有匹配XName的元素。(继承自XNode。)

ElementsBeforeSelf()

按文档顺序返回此节点前的同级元素集合。(继承自XNode。)

ElementsBeforeSelf(XName)

按文档顺序返回此节点前经过筛选的同级元素的集合。集合中只包括具有匹配XName的元素。(继承自XNode。)

Equals(Object)

确定指定的Object是否等于当前的Object。(继承自Object。)

Finalize

允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。(继承自Object。)

GetHashCode

用作特定类型的哈希函数。(继承自Object。)

GetType

获取当前实例的Type。(继承自Object。)

IsAfter

确定当前节点是否按文档顺序显示在指定节点之后。(继承自XNode。)

IsBefore

确定当前节点是否按文档顺序显示在指定节点之前。(继承自XNode。)

Load(Stream)

使用指定的流创建一个新的XDocument实例。

Load(String)

从文件创建新XDocument

Load(TextReader)

TextReader创建新的XDocument

Load(XmlReader)

XmlReader创建新XDocument

Load(Stream, LoadOptions)

使用指定流创建新的XDocument实例,也可以选择保留空白,设置基 URI 和保留行信息。

Load(String, LoadOptions)

从文件创建新XDocument,还可以选择保留空白和行信息以及设置基 URI。

Load(TextReader, LoadOptions)

TextReader创建新XDocument,还可以选择保留空白和行信息以及设置基 URI。

Load(XmlReader, LoadOptions)

XmlReader加载XElement,还可以选择设置基 URI 和保留行信息。

MemberwiseClone

创建当前Object的浅表副本。(继承自Object。)

Nodes

按文档顺序返回此元素或文档的子节点集合。(继承自XContainer。)

NodesAfterSelf

按文档顺序返回此节点后的同级节点的集合。(继承自XNode。)

NodesBeforeSelf

按文档顺序返回此节点前的同级节点的集合。(继承自XNode。)

Parse(String)

从字符串创建新XDocument

Parse(String, LoadOptions)

从字符串创建新XDocument,还可以选择保留空白和行信息以及设置基 URI。

Remove

从节点父级中删除此节点。(继承自XNode。)

RemoveAnnotations(Type)

从此XObject移除指定类型的批注。(继承自XObject。)

RemoveAnnotations<T>()

从此XObject移除指定类型的批注。(继承自XObject。)

RemoveNodes

从此文档或元素中移除子节点。(继承自XContainer。)

ReplaceNodes(Object)

使用指定的内容替换此文档或元素的子节点。(继承自XContainer。)

ReplaceNodes(Object[])

使用指定的内容替换此文档或元素的子节点。(继承自XContainer。)

ReplaceWith(Object)

使用指定的内容替换此节点。(继承自XNode。)

ReplaceWith(Object[])

使用指定的内容替换此节点。(继承自XNode。)

Save(Stream)

将此XDocument输出到指定的Stream

Save(String)

序列化此XDocument到文件,如果该文件存在,则覆盖现有的文件。

Save(TextWriter)

将此XDocument序列化为TextWriter

Save(XmlWriter)

将此XDocument序列化为XmlWriter

Save(Stream, SaveOptions)

将此XDocument输出到指定的Stream,也可选择指定格式设置行为。

Save(String, SaveOptions)

将此XDocument序列化为文件,还可以选择禁用格式设置。

Save(TextWriter, SaveOptions)

将此XDocument序列化为TextWriter,还可以选择禁用格式设置。

ToString()

返回此节点的缩进 XML。(继承自XNode。)

ToString(SaveOptions)

返回此节点的 XML,还可以选择禁用格式设置。(继承自XNode。)

WriteTo

将此文档写入XmlWriter。(重写XNode.WriteTo(XmlWriter)。)

 

4.2数据导出到XML文件

class Program

{

static void Main(string[] args)

{

XDocument doc = new XDocument();

XElementele = new XElement("root");

    string sql = @"select stuId, stuName, stuSex, stuBirthdate, stuStudydate, stuAddress, stuEmail, stuPhone, stuIsDel, stuInputtime, classId from Student";

    string[] strs = {"stuId", "stuName", "stuSex", "stuBirthdate", "stuStudydate", "stuAddress", "stuEmail", "stuPhone", "stuIsDel", "stuInputtime", "classId" };

    using (SqlDataReader reader = SQLHelper.ExecuteReader(sql))

    {

         if (reader.HasRows)

         {

             while (reader.Read())

             {

                  XElement stu = new XElement("student");

                  for (int i = 0; i <reader.FieldCount; i )

                  {

                      XElement stuChild = new XElement(strs[i]);

stuChild.Value = reader[i].ToString();

                      stu.Add(stuChild);

                  }

                  ele.Add(stu);

}

doc.Add(ele);

doc.Save("stuData.xml");

}

}

Console.WriteLine("导出成功!");

}

}

4.3 XML文件导入数据库

//准备语句,定义参数

string sql = @"insert into Student0818(stuName, stuSex, stuBirthdate, stuStudydate, stuAddress, stuEmail, stuPhone, stuIsDel, stuInputtime, classId) values(@stuName, @stuSex, @stuBirthdate, @stuStudydate, @stuAddress, @stuEmail, @stuPhone, @stuIsDel, @stuInputtime, @classId)";

SqlParameter[] para =

            {

                   new SqlParameter("@stuName",SqlDbType.NVarChar),

                   new SqlParameter("@stuSex",SqlDbType.Char),

                   new SqlParameter("@stuBirthdate",SqlDbType.DateTime),

                   new SqlParameter("@stuStudydate",SqlDbType.DateTime),

                   new SqlParameter("@stuAddress",SqlDbType.NVarChar),

                   new SqlParameter("@stuEmail",SqlDbType.NVarChar),

                   new SqlParameter("@stuPhone",SqlDbType.NVarChar),

                   new SqlParameter("@stuIsDel",SqlDbType.Bit),

                   new SqlParameter("@stuInputtime",SqlDbType.DateTime),

                   new SqlParameter("@classId",SqlDbType.Int)

            };

//准备XML文档

XDocument doc = XDocument.Load("stuData.xml");

XElement root =doc.Root;

int count = 0;

//解析XML文档,插入数据库

foreach (XElement row in root.Elements())

{

   List<string> list = new List<string>();

foreach (XElement ele in row.Elements())

{

list.Add(ele.Value);

}

   for (int i = 0; i < list.Count-1; i )

{

para[i].Value = list[i 1]; //用.value,不用考虑数据类型转换,没有StuId参数,所以跳过,从list[1]开始

}

SQLHelper.ExecutNoquery(sql,para);

   count ;

}

 Console.WriteLine("{0}行受影响",count);