今天学了这个,嘿嘿,新手的可以共同学习一下哦。
在以前的XmlDocument的方法创建xml的节点感觉很多代码,今天学了LinqToXml感觉很轻松。对比代码
XmlDocument dc = new XmlDocument();
stuinfo stu = new stuinfo();
XmlNode xn = dc.CreateElement("students");
XmlAttribute xmla = dc.CreateAttribute("stuid");
xmla.Value = stu.stuid.ToString() ;
xn.Attributes.Append(xmla);
XmlNode xnl = dc.CreateElement("stuname");
xnl.InnerText = stu.stuname;
xn.AppendChild(xnl);
dc.AppendChild(xn);
dc.Save("D://fdsfds.xml");
return true;
XElement element = new XElement("Books",
new XElement("Book",
new XElement("title", "aaa"),
new XElement("Author", "hello"),
new XAttribute("id", 1)));
element.Save("D://fds.xml");
XElement 的层次感更强一些,不会发图片。呵呵第一次发比较哦,大家别说我哈。我初学阶段。~~
下面是LInq对XML的操作:
//把数据库中的表读取成xml的文件,保存在D盘123.xml文件
SqlConnection conn = new SqlConnection("server=.;database=student;uid=sa;pwd=123456");
string sql = "select * from BOOK";
SqlDataAdapter da = new SqlDataAdapter(sql,conn);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable dt = ds.Tables[0];
XElement element = new XElement("Books");
for (int i = 0; i < dt.Rows.Count; i++)
{
XElement elments = new XElement(
new XElement("book",
new XElement("title", dt.Rows[i]["Book"]),
new XElement("Athor", dt.Rows[i]["Author"])
)
);
element.Add(elments);
}
element.Save("D://123.xml");
//获取指定的节点
protected void Button8_Click(object sender, EventArgs e)
{
string xmlpath = Server.MapPath("BOOK.xml");
XDocument doc = XDocument.Load(xmlpath);
//获取根
XElement root = doc.Root;
IEnumerable<XElement> elements = from elem in root.Elements("Book")
where (string)elem.Attribute("id")
== id1.Value//id1是个TEXTBOX哈
select elem;
Response.ContentType = "text/xml";
foreach (XElement ele in elements)
{
Response.Write(ele);
}
Response.End();
}
对节点的修改
string xmlpath = Server.MapPath("BOOK.xml");
XDocument doc = XDocument.Load(xmlpath);
XElement root = doc.Root;
IEnumerable<XElement> elements = from elem in root.Elements("Book")
where (string)elem.Attribute("id")
== "1"//1被写死了,大家可以用TEXTBOX
select elem;
if (elements.Count()>0)
{
XElement el = elements.First();/这里我写的是修改第一个节点,如果修改其他的要用循环匹配哦
el.SetAttributeValue("id", "1");
el.ReplaceNodes(new XElement("title", "ajax"),
new XElement("Author", "怀特"));
}
root.Save(xmlpath);
删除节点和修改基本一样哦,就不浪费空间贴代码了。 是不是有点乱?如果有没看懂的给我留言,我已经把乱的地方加了注释了。呵呵,我菜鸟,不过我有心意哦~~对了,不知道LINQ是什么的,那么代码里的LINQ语法可能会看不懂。。。可以去参考来继敏老师才讲的lamda表达式。