2.遍历XML即添加修改节点

1.xml

<?xml version="1.0" encoding="utf-8" ?>
<stories>
  <story ac="98">
    <title>A House in Aungier Street</title>
    <author>
      <name>Sheridan le Fanu</name>
      <nationality>Irish</nationality>
    </author>
    <rating>eerie</rating>
  </story>
  <story ac ="97">
    <title>The Signalman</title>
    <author>
      <name>Charles Dickens</name>
      <nationality>English</nationality>
    </author>
    <rating>atmospheric</rating>
  </story>

</stories>

代码,添加一个按钮,并绑定到btnLoop_Click方法,添加lable txtResult即可

private void btnLoop_Click(object sender, EventArgs e)
        {

            XmlDocument doc = new XmlDocument();
            string filePath =@"D:\文档\VS2010项目\XMLTest\XMLTest\XMLFile1.xml";
            doc.Load(filePath);

            //添加节点
            XmlElement newBook = doc.CreateElement("story");
            XmlElement newTitle = doc.CreateElement("Title");
            XmlElement newAuthor = doc.CreateElement("author");
            XmlElement newName = doc.CreateElement("name");
            XmlElement newNationality = doc.CreateElement("nationality");
            XmlElement newRating =doc.CreateElement("rating");

            XmlText title = doc.CreateTextNode("Beginning VS2010");
            XmlText name = doc.CreateTextNode("Karing");
            XmlText nationality = doc.CreateTextNode("UK");
            XmlText rating = doc.CreateTextNode("4 star");
            XmlComment comment = doc.CreateComment("The Previous Version");

            newBook.AppendChild(comment);
            newBook.AppendChild(newTitle);
            newBook.AppendChild(newAuthor);
            newAuthor.AppendChild(newName);
            newAuthor.AppendChild(newNationality);
            newBook.AppendChild(newRating);

            newTitle.AppendChild(title);
            newName.AppendChild(name);
            newNationality.AppendChild(nationality);
            newRating.AppendChild(rating);

            XmlNode root = doc.DocumentElement;
            root.InsertAfter(newBook, root.FirstChild);//放到第一个子节点之后

            doc.Save("xmlFileAddNode.xml");

            //删除节点
            root.RemoveChild(root.FirstChild);//删除第一本书
            doc.Save("deleteNode.xml");

            //在不遍历xml文档的情况下选择节点
            txtResult.Text = FormatText(root, "", "");//遍历xml
        }

        //通过循环xml节点把xml写入字符串
        private string FormatText(XmlNode node, string text, string indent)
        {
            if (node is XmlText)
            {
                text += node.Value;
                return text;
            }

            if (string.IsNullOrEmpty(indent))
                indent = "";
            else
                text += "\r\n" + indent;

            if (node is XmlComment)//注释节点
            {
                text += node.OuterXml;//OuterXml:当前节点的XML,InnerXml:当前节点开始标签和结束标签之间的XML,Value 只有XmlText,XmlAttribute,XmlComment有值,文本节点的文本值或者属性值
                return text;//注InnerText返回当前节点所有字节的文本,如<book><title>111</title><author>222</author></book>,book节点的InnerText是111222
            }

            text += "<" + node.Name;
            if (node.Attributes.Count > 0)
            {
                AddAttributes(node,ref text);//属性
            }

            if (node.HasChildNodes)
            {
                text += ">";
                foreach (XmlNode child in node.ChildNodes)
                {
                   text = FormatText(child, text, indent + " ");
                }

                if(node.ChildNodes.Count ==1&&(node.FirstChild is XmlText || node.FirstChild is XmlComment))
                    text +="</"+node.Name +">";
                else
                    text +="\r\n"+"</"+node.Name +">";
            }else
                text +=" />";

            return text;
        }

        private void AddAttributes(XmlNode node ,ref string text)
        {
            foreach (XmlAttribute xa in node.Attributes)
            {
                text += " " + xa.Name + "=‘" + xa.Value + "‘";
            }
        }

原文地址:https://www.cnblogs.com/lidaying5/p/11187968.html

时间: 2024-10-31 07:16:02

2.遍历XML即添加修改节点的相关文章

遍历XML文件添加到TreeView递归调用

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Xml.Linq; namespace 遍历X

C# XML 给xml文件添加根节点

1 代码 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Xml.Linq; 7 8 namespace ConsoleApplication8 9 { 10 class Program 11 { 12 static void Main(string[] args)

Qt之Dom添加和修改节点

使用QtXml模块DOM模式操作XML时,添加修改节点直接使用QDomElement的setNodeValue()方法不起作用,研究好久才发现使用方法有问题,正确方法如下: 1.添加节点 QDomElement root = doc.documentElement(); QDomElement newElem = doc.createElement("test"); QDomText newText = doc.createTextNode("你好"); newEl

Idea开发环境中,开发springboot类型的项目,如果只引入parent节点,不添加依赖节点,maven是不会加载springboot的任何依赖的

在SpringBoot类型的项目中,我本来是要使用pringBoot,创建一个Console项目,我原本在pom.xml中添加paren节点了,天真的认为不需要再添加其他任何依赖了,可是接下来的1个小时左右,我彻底的承认,我错了,错的很离谱: 参见:基于 Spring Boot 编写控制台程序 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apach

C# 遍历XML文件,添加,更新,删除节点

一,将XML文件添加到text文本中: 方法1,最简单方式 1 private void ReadFile() 2 3 { 4 5 string path = Application.StartupPath + @"/bookstore.xml"; 6 7 byte[] myByte; 8 9 //File.OpenRead(path); 10 11 myByte = File.ReadAllBytes(path); 12 13 this.textBox1.Text = string.

asp.net对xml文件的读写,添加,修改,删除操作

using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; usi

C#中操作xml文件(插入节点、修改、删除)

已知有一个XML文件(bookstore.xml)如下:     <?xml   version="1.0"   encoding="gb2312"?>     <bookstore>         <book   genre="fantasy"   ISBN="2-3631-4">             <title>Oberon's   Legacy</title&

关于XML的读取,添加,修改,删除

----- 转载CSDN,觉得作者写挺好,记录这里当做笔记学习,且对应方法msdn查了一下,添加了注释更加透彻明白,有什么不对,请留言指教: 其中, XmlNode 继承于 IConeable,IEnumerable,IXPathNavigable; XmlDocument 继承于XmlNode; XmlElement 继承于XmlLinkedNode,而XmlLinkedNode 继承于XmlNode; XML文档 1 <?xml version='1.0' encoding='gb2312'

测试dom4j创建、修改、遍历XML

java项目概览: XmlManage.java [java] view plaincopyprint? package com.jialin; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; imp