XML 增、删、改

黄舟
Release: 2017-02-15 15:36:13
Original
1328 people have browsed it

样本XML文件(bookstore.xml)



  
    Oberon's Legacy
    Corets, Eva
    5.95
  
Copy after login

1、往节点中插入一个节点:

XmlDocument xmlDoc = new XmlDocument();
 xmlDoc.Load("E:\\bookstore.xml");
 XmlNode root = xmlDoc.SelectSingleNode("bookstore");//查找
 XmlElement xe1 = xmlDoc.CreateElement("book");//创建一个节点
 xe1.SetAttribute("genre", "李赞红");//设置该节点genre属性
 xe1.SetAttribute("ISBN", "2-3631-4");//设置该节点ISBN属性

 XmlElement xesub1 = xmlDoc.CreateElement("title");
 xesub1.InnerText = "CS从入门到精通";//设置文本节点
 xe1.AppendChild(xesub1);//添加到节点中
 XmlElement xesub2 = xmlDoc.CreateElement("author");
 xesub2.InnerText = "候捷";
 xe1.AppendChild(xesub2);
 XmlElement xesub3 = xmlDoc.CreateElement("price");
 xesub3.InnerText = "58.3";
 xe1.AppendChild(xesub3);
 root.AppendChild(xe1);//添加到节点中
 xmlDoc.Save("E:\\bookstore.xml");
Copy after login


修改后的xml文件为:




  
    Oberon's Legacy
	Corets, Eva
    	5.95
  
  
    CS从入门到精通
    候捷
    58.3
  
Copy after login


2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点的文本修改为“亚胜”。

	    XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load("E:\\bookstore.xml");
            XmlNodeList nodeList = xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点
            foreach (XmlNode xn in nodeList)//遍历所有子节点
            {
                XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
                if (xe.GetAttribute("genre") == "李赞红")//如果genre属性值为“李赞红”
                {
                    xe.SetAttribute("genre", "update李赞红");//则修改该属性为“update李赞红”
                    XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
                    foreach (XmlNode xn1 in nls)//遍历
                    {
                        XmlElement xe2 = (XmlElement)xn1;//转换类型
			//title、author、price都会在xe2.Name中取到
                        if (xe2.Name == "author")//如果找到
                        {
                            xe2.InnerText = "亚胜";//则修改
                            break;//找到退出来就可以了
                        }
                    }
                    break;
                }
            }
            xmlDoc.Save("bookstore.xml");//保存。
Copy after login


小注:

1、去掉修改节点代码中的两个break后,该代码可以实现遍历修改整个xml文档的功能,由此可见foreach对于操作XML文件,可以进行遍历的修改,但不能进行遍历的增加与删除。

2、注意对于xml文件操作中for与foreach的对应转化:关于XML遍历新增节点,修改属性小例
修改后的xml文件为:



  
    Oberon's Legacy
    Corets, Eva
    5.95
  
  
    CS从入门到精通
    亚胜
    58.3
  
Copy after login


3、删除 节点的genre属性,删除 节点。

	    XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load("E:\\bookstore.xml");
            XmlNodeList xnl = xmlDoc.SelectSingleNode("bookstore").ChildNodes;
            foreach (XmlNode xn in xnl)
            {
                XmlElement xe = (XmlElement)xn;
                if (xe.GetAttribute("genre") == "fantasy")
                {
                    xe.RemoveAttribute("genre");//删除genre属性
                }
                else if (xe.GetAttribute("genre") == "李赞红")
                {
		    //RemoveAll会移除指定节点下所有信息,但会保留该节点
                    xe.RemoveAll();//删除该节点的全部内容
                }
            }
            xmlDoc.Save("E:\\bookstore.xml");小注:在操作XML文件的时候使用了foreach,故删除一个节点的全部内容后,便会跳出foreach循环。
            修改后的xml文件为:


    Oberon's Legacy
    Corets, Eva
    5.95
  
  
  
4、显示所有数据。	   XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load("E:\\bookstore.xml");
            XmlNode xn = xmlDoc.SelectSingleNode("bookstore");
            XmlNodeList xnl = xn.ChildNodes;
            foreach (XmlNode xnf in xnl)
            {
                XmlElement xe = (XmlElement)xnf;
                MessageBox.Show(xe.GetAttribute("genre"));//显示属性值
                MessageBox.Show(xe.GetAttribute("ISBN"));
                XmlNodeList xnf1 = xe.ChildNodes;
                foreach (XmlNode xn2 in xnf1)
                {
                    MessageBox.Show(xn2.InnerText);//显示子节点点文本
                }
            } 原文地址==》
Copy after login

以上就是XML 增、删、改的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact [email protected]
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!