Web开发之C#:(9)C#常用类库4:XDocument
4.XDocument类
4.1 XDocument类相关方法
|
名称 |
说明 |
|
将指定的内容添加为此XContainer的子级。(继承自XContainer。) |
|
|
将指定的内容添加为此XContainer的子级。(继承自XContainer。) |
|
|
紧跟在此节点之后添加指定的内容。(继承自XNode。) |
|
|
紧跟在此节点之后添加指定的内容。(继承自XNode。) |
|
|
||
|
紧邻此节点之前添加指定的内容。(继承自XNode。) |
|
|
紧邻此节点之前添加指定的内容。(继承自XNode。) |
|
|
将指定的内容作为此文档或元素的第一个子级添加。(继承自XContainer。) |
|
|
将指定的内容作为此文档或元素的第一个子级添加。(继承自XContainer。) |
|
|
返回此节点的上级元素的集合。(继承自XNode。) |
|
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
创建可用于将节点添加至XContainer的XmlWriter。(继承自XContainer。) |
|
|
按文档顺序返回此文档或元素的子代节点集合。(继承自XContainer。) |
|
|
按文档顺序返回此文档或元素的子代元素集合。(继承自XContainer。) |
|
|
按文档顺序返回此文档或元素的经过筛选的子代元素集合。集合中只包括具有匹配XName的元素。(继承自XContainer。) |
|
|
获取具有指定XName的第一个(按文档顺序)子元素。(继承自XContainer。) |
|
|
按文档顺序返回此元素或文档的子元素集合。(继承自XContainer。) |
|
|
按文档顺序返回此元素或文档的经过筛选的子元素集合。集合中只包括具有匹配XName的元素。(继承自XContainer。) |
|
|
按文档顺序返回此节点后的同级元素集合。(继承自XNode。) |
|
|
||
|
按文档顺序返回此节点前的同级元素集合。(继承自XNode。) |
|
|
||
|
||
|
允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。(继承自Object。) |
|
|
用作特定类型的哈希函数。(继承自Object。) |
|
|
||
|
确定当前节点是否按文档顺序显示在指定节点之后。(继承自XNode。) |
|
|
确定当前节点是否按文档顺序显示在指定节点之前。(继承自XNode。) |
|
|
使用指定的流创建一个新的XDocument实例。 |
|
|
从文件创建新XDocument。 |
|
|
从TextReader创建新的XDocument。 |
|
|
||
|
使用指定流创建新的XDocument实例,也可以选择保留空白,设置基 URI 和保留行信息。 |
|
|
从文件创建新XDocument,还可以选择保留空白和行信息以及设置基 URI。 |
|
|
从TextReader创建新XDocument,还可以选择保留空白和行信息以及设置基 URI。 |
|
|
||
|
||
|
按文档顺序返回此元素或文档的子节点集合。(继承自XContainer。) |
|
|
按文档顺序返回此节点后的同级节点的集合。(继承自XNode。) |
|
|
按文档顺序返回此节点前的同级节点的集合。(继承自XNode。) |
|
|
从字符串创建新XDocument。 |
|
|
从字符串创建新XDocument,还可以选择保留空白和行信息以及设置基 URI。 |
|
|
从节点父级中删除此节点。(继承自XNode。) |
|
|
||
|
||
|
从此文档或元素中移除子节点。(继承自XContainer。) |
|
|
使用指定的内容替换此文档或元素的子节点。(继承自XContainer。) |
|
|
使用指定的内容替换此文档或元素的子节点。(继承自XContainer。) |
|
|
使用指定的内容替换此节点。(继承自XNode。) |
|
|
使用指定的内容替换此节点。(继承自XNode。) |
|
|
||
|
序列化此XDocument到文件,如果该文件存在,则覆盖现有的文件。 |
|
|
将此XDocument序列化为TextWriter。 |
|
|
||
|
||
|
将此XDocument序列化为文件,还可以选择禁用格式设置。 |
|
|
将此XDocument序列化为TextWriter,还可以选择禁用格式设置。 |
|
|
返回此节点的缩进 XML。(继承自XNode。) |
|
|
返回此节点的 XML,还可以选择禁用格式设置。(继承自XNode。) |
|
|
将此文档写入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);