分享

C#操作XML文件

 maoj66 2013-09-07

C#操作XML文件

在C#中对XML文件的操作主要用到了XmlDocument类,它可对XML的DOM树进行解析。
1、加载现有的XML文件
XmlDocument dd = new XmlDocument();
dd.Load(Server.MapPath("tt.xml"));

2、保存XmlDocument对象到文件
dd.Save(Server.MapPath("tt.xml"));

3、向XmlDocument对象中加入XML声明
XmlDocument xd = new XmlDocument();
xd.AppendChild(xd.CreateXmlDeclaration("1.0", "utf-8", "yes"));


4、取得指字的节点对象(XmlNode)
xn.FirstChild; //返回XmlNode对象,表示取得当前节点下的第一个子节点。
xn.NextSibling; //返回XmlNode对象,表示取得当前节点的下一个兄弟节点。
xn.PreviousSibling; //返回XmlNode对象,表示取得当前节点的上一个兄弟节点。
xn.LastChild; //返回XmlNode对象,表示取得当前节点下的最后一个子节点。
xn.SelectSingleNode(); //返回XmlNode对象,根据节点元素名称返回当前节点下的第一个子节点。
xn.SelectNodes(); //返回XmlNodeList集合对象,根据节点元素名称返回当前节点下该名称的所有子节点。
xd.GetElementById();
xd.GetElementsByTagName();

5、为指定的元素加入子元素
XmlDocument xd = new XmlDocument();
XmlNode root = xd.CreateElement("Root");
xd.AppendChild(root);

6、移除该元素下的指定子元素
xd.RemoveChild(xmlnode);

7、修改该元素的元素内容
xd.InnerXml = "...."

8、为元素添加属性
xn.Attributes.Append(xd.CreateAttribute("name"));
xn.Attributes["name"].Value = "张三";

9、把数据库中表的内容转存为XML文件
SqlConnection conn = new SqlConnection("server=.;database=mydb;uid=sa;pwd=123");
SqlCommand cmd = conn.CreateCommand();
//把列的内容作为属性,根元素名子为<root>
cmd.CommandText = "select * from student for xml auto,root('root')";
conn.Open();
XmlReader xr = cmd.ExecuteXmlReader();
XmlDocument dd = new XmlDocument();
dd.Load(xr); ;
XmlNode xx = dd.FirstChild;   //取得根元素
XmlDeclaration xd = dd.CreateXmlDeclaration("1.0", "utf-8", "yes");   //创建XML声明
dd.InsertBefore(xd,xx);   //在根元素前加入XML声明
dd.Save(Server.MapPath("tt.config"));
conn.Close();
执行结果:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<root>
<student sno="101" sname="李军" ssex="男" sbirthday="1976-02-20T00:00:00" class="95033" />
<student sno="103" sname="陆君" ssex="男" sbirthday="1974-06-03T00:00:00" class="95031" />
<student sno="105" sname="匡明" ssex="男" sbirthday="1975-10-02T00:00:00" class="95031" />
<student sno="107" sname="王丽" ssex="女" sbirthday="1976-01-23T00:00:00" class="95033" />
<student sno="108" sname="曾华" ssex="男" sbirthday="1977-09-01T00:00:00" class="95033" />
<student sno="109" sname="王芳" ssex="女" sbirthday="1975-02-10T00:00:00" class="95031" />
</root>

如果把上面的SqlCommand对象的CommandText改为如下:
cmd.CommandText = "select * from student for xml auto,root('root'),elements";
那会把每列的名子作为子元素出现
执行结果如下:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<root>
<student>
    <sno>101</sno>
    <sname>李军</sname>
    <ssex>男</ssex>
    <sbirthday>1976-02-20T00:00:00</sbirthday>
    <class>95033</class>
</student>
<student>
    <sno>103</sno>
    <sname>陆君</sname>
    <ssex>男</ssex>
    <sbirthday>1974-06-03T00:00:00</sbirthday>
    <class>95031</class>
</student>
<student>
    <sno>105</sno>
    <sname>匡明</sname>
    <ssex>男</ssex>
    <sbirthday>1975-10-02T00:00:00</sbirthday>
    <class>95031</class>
</student>
<student>
    <sno>107</sno>
    <sname>王丽</sname>
    <ssex>女</ssex>
    <sbirthday>1976-01-23T00:00:00</sbirthday>
    <class>95033</class>
</student>
<student>
    <sno>108</sno>
    <sname>曾华</sname>
    <ssex>男</ssex>
    <sbirthday>1977-09-01T00:00:00</sbirthday>
    <class>95033</class>
</student>
<student>
    <sno>109</sno>
    <sname>王芳</sname>
    <ssex>女</ssex>
    <sbirthday>1975-02-10T00:00:00</sbirthday>
    <class>95031</class>
</student>
</root>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约