2.遍历XML即添加修改节点
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即添加修改节点的更多相关文章
- 用dom4j修改xml(增加修改节点)
用dom4j修改xml(增加修改节点) 博客分类: Java XMLJavaMyeclipseServlet 使用dom4j修改解析xml,xml文件的位置是配置在xml.properties文件中 ...
- Idea开发环境中,开发springboot类型的项目,如果只引入parent节点,不添加依赖节点,maven是不会加载springboot的任何依赖的
在SpringBoot类型的项目中,我本来是要使用pringBoot,创建一个Console项目,我原本在pom.xml中添加paren节点了,天真的认为不需要再添加其他任何依赖了,可是接下来的1个小 ...
- C# xml 读xml、写xml、Xpath、Xml to Linq、xml添加节点 xml修改节点
#region XDocument //创建XDocument XDocument xdoc2 = new XDocument(); XElement xel1= new XElement(" ...
- Dom4j向XML中指定位置添加、删除、修改节点——(五)
需求: 在第一本书作者后面增加描述 <描述>好书</描述> 思路:获取书下面下的所有节点(一个list集合),在list集合指定位置添加一个元素(list.add(index ...
- C#中操作xml文件(插入节点、修改、删除)
已知有一个xml文件(bookstore.xml)如下: <?xml version="1.0" encoding="gb2312"?> <b ...
- 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点
使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...
- c#操作xml的代码(插入节点、修改节点、删除节点等)
bookstore.xml文件内容: 复制代码代码示例: <?xml version="1.0" encoding="gb2312"?><bo ...
- 用TinyXml做XML解析示例 TinyXml查找唯一节点及修改节点操作
// 读者对象:对TinyXml有一定了解的人.本文是对TinyXml工具的一些知识点的理解. // 1 TinyXml中对TiXmlNode进行了分类,是用一个枚举进行描述的. // enum No ...
- 问题:jQuery中遍历XML文件时候,获取子节点children不支持的情况(已解决)
问题描述: 今天在写一个基于 jquery 的读取xml文件的程序时候,需要遍历xml的节点. 代码片段如下: function parse_xml_node(parent,result){ // r ...
随机推荐
- 记RDS数据库表数据误删恢复
1.登录阿里云RDS后台,找到“备份”入口,如下图: 2.下载最近的备份数据,如下图: 3.解压,找到误删数据的表,如下图:(这里拿sys_role举例) 4.在本机(Windows系统), a. 装 ...
- 第3/7Beta冲刺
1.团队成员 成员姓名 成员学号 秦裕航 201731062432(组长) 刘东 201731062227 张旭 201731062129 王伟 201731062214 2.SCRU部分 2.1各成 ...
- java8新特性六-Optional 类
Optional 类是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. Optional 是个容器:它可以保存类型T的值,或者仅仅保 ...
- Python的线程、进程和协程
进程:一个进程就是一个正在运行的程序,它是计CPU分配资源的最小单位.每个进程都有自己独立的内存空间.能同时执行的进程数最多不超过内核数,也就是每个内核 同一时刻只能执行一个进程.那么多进程就是能[同 ...
- [转帖]Linux教程(21)-Linux条件循环语句
Linux教程(21)-Linux条件循环语句 2018-08-24 16:49:03 钱婷婷 阅读数 60更多 分类专栏: Linux教程与操作 Linux教程与使用 版权声明:本文为博主原创文 ...
- SQL——AS别名
一.SQL别名的基本用法 SQL可以为表或者列指定别名. 语法格式如下(表): SELECT 列名1,列名2... FROM 表名 AS 别名; 语法格式如下(列): SELECT 列名1 AS 别名 ...
- nRF24L01P数据传输速率
项目要用nRF24L01P做语音的传输,数据量可想而知. 发送端按照8KHz/s采样率,每次采样双声道,16位深度(2Bytes). 数据量算一下就是8000x2x2=32000(Bytes) nRF ...
- Linux 环境安装 Node、nginx、docker、vsftpd、gitlab
Linux 环境安装 centos7 # 更新yum yum update -y 0. 防火墙 firewalld 新入的JD云服务器,发现防火墙默认是关闭的. # 查看防火墙状态 systemctl ...
- Ali-Tomcat 安装
通过在 Eclipse 安装 Tomcat4e 插件,或者在 Intellij Idea 安装配置 Ali-tomcat,可以快 速方便地启动并调试基于 EDAS 服务化框架 HSF 开发的应用. 1 ...
- Oracle 11g Java驱动包ojdbc6.jar安装到maven库,并查看jar具体版本号
ojdbc6.jar下载 Oracle官方宣布的Oracle数据库11g的驱动jar包是ojdbc6.jar ojdbc6.jar下载地址:https://www.oracle.com/technet ...