1.xml

<?xml version="1.0" encoding="utf-8" ?>
<stories>
<story ac="">
<title>A House in Aungier Street</title>
<author>
<name>Sheridan le Fanu</name>
<nationality>Irish</nationality>
</author>
<rating>eerie</rating>
</story>
<story ac ="">
<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 > )
{
AddAttributes(node,ref text);//属性
} if (node.HasChildNodes)
{
text += ">";
foreach (XmlNode child in node.ChildNodes)
{
text = FormatText(child, text, indent + " ");
} if(node.ChildNodes.Count ==&&(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 + "'";
}
}

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

  1. 用dom4j修改xml(增加修改节点)

    用dom4j修改xml(增加修改节点) 博客分类: Java XMLJavaMyeclipseServlet  使用dom4j修改解析xml,xml文件的位置是配置在xml.properties文件中 ...

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

    在SpringBoot类型的项目中,我本来是要使用pringBoot,创建一个Console项目,我原本在pom.xml中添加paren节点了,天真的认为不需要再添加其他任何依赖了,可是接下来的1个小 ...

  3. C# xml 读xml、写xml、Xpath、Xml to Linq、xml添加节点 xml修改节点

    #region XDocument //创建XDocument XDocument xdoc2 = new XDocument(); XElement xel1= new XElement(" ...

  4. Dom4j向XML中指定位置添加、删除、修改节点——(五)

    需求: 在第一本书作者后面增加描述 <描述>好书</描述>  思路:获取书下面下的所有节点(一个list集合),在list集合指定位置添加一个元素(list.add(index ...

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

    已知有一个xml文件(bookstore.xml)如下: <?xml version="1.0" encoding="gb2312"?> <b ...

  6. 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点

    使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...

  7. c#操作xml的代码(插入节点、修改节点、删除节点等)

    bookstore.xml文件内容: 复制代码代码示例: <?xml version="1.0" encoding="gb2312"?><bo ...

  8. 用TinyXml做XML解析示例 TinyXml查找唯一节点及修改节点操作

    // 读者对象:对TinyXml有一定了解的人.本文是对TinyXml工具的一些知识点的理解. // 1 TinyXml中对TiXmlNode进行了分类,是用一个枚举进行描述的. // enum No ...

  9. 问题:jQuery中遍历XML文件时候,获取子节点children不支持的情况(已解决)

    问题描述: 今天在写一个基于 jquery 的读取xml文件的程序时候,需要遍历xml的节点. 代码片段如下: function parse_xml_node(parent,result){ // r ...

随机推荐

  1. 博客迁移到github了

    博客迁移到github了,这边基本不更新, 主要是没有找到快捷的同步方法,手动同步太麻烦了,如果你有快速把github博客同步到博客园的方法请一定告诉我

  2. C# 编译器 和 反编译器,你要哪个(歪头)? 我全都要(捏拳)!

    前言 从 C# 6.0 开始,C# 编译器就从以前由 C++ 实现的 csc.exe 换成了用 C# 重新实现的开放式 API 式编译服务 Roslyn.这个编译器到现在已经替代了老式编译器,从前 W ...

  3. Qt deletelater函数分析(2)

       夫唯不争,故天下莫能与之争  -- 老子 在C++中,delete 和 new 必须 配对使用,Qt作为C++的库,显然是不会违背C++原则.但是,qt有自己的内存管理,有时候虽然使用了new, ...

  4. qmake, makefile, make是什么东东,makefile简介!

    qmake是一个协助简化跨平台开发的构建过程 的工具,Qt附带的工具之一 .qmake能够自动生成Makefile.Microsoft Visual Studio 专案文件 和 xcode 专案文件. ...

  5. [转帖]ARM A77+G77最强公版架构:联发科5G SoC计划11月26日发布

    ARM A77+G77最强公版架构:联发科5G SoC计划11月26日发布 https://www.cnbeta.com/articles/tech/909025.htm 主流的手机SoC厂商已经纷纷 ...

  6. Apache Kafka Producer For Beginners

    在我们上一篇Kafka教程中,我们讨论了Kafka Cluster.今天,我们将通过示例讨论Kafka Producer.此外,我们将看到KafkaProducer API和Producer API. ...

  7. 使用 Angular RouteReuseStrategy 缓存(路由)组件

    使用 Angular RouteReuseStrategy 缓存组件 Cache components with Angular RouteReuseStrategy RouteReuseStrate ...

  8. Log4J对系统性能的影响

    Log4J对系统性能的影响 主要体现: 1.日志输出的目的地,输出到控制台的速度比输出到文件系统的速度要慢. 2.日志输出格式不一样对性能也会有影响,如简单输出布局(SimpleLayout)比格式化 ...

  9. golang--获取进程ID(windows)

    package main import ( "fmt" "strconv" "syscall" "unsafe" ) t ...

  10. 使用mavan构建自定义项目脚手架

    首先抛出一个问题是为什么要构建自定义的脚手架,maven已经为了我么提供了很多脚手架,方便我们快速的创建一个普通java项目或者是web项目,然而在实际开发中,例如银行项目,大部分都是ssm架构,我们 ...