C++中XML的基本操作

简介:
我用的是一种很笨的方法,但可以帮助初学者了解访问xml节点的过程。 

已知有一个xml文件(bookstore.xml)如下:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" isbn="2-3631-4">
<title>oberon’s legacy</title>
<author>corets, eva</author>
<price>5.95</price>
</book>
</bookstore>

1、往<bookstore>节点中插入一个<book>节点:
xmldocument xmldoc=new xmldocument();
xmldoc.load("bookstore.xml");
xmlnode root=xmldoc.selectsinglenode("bookstore");//查找<bookstore>
xmlelement xe1=xmldoc.createelement("book");//创建一个<book>节点
xe1.setattribute("genre","李赞红");//设置该节点genre属性
xe1.setattribute("isbn","2-3631-4");//设置该节点isbn属性

xmlelement xesub1=xmldoc.createelement("title");
xesub1.innertext="cs从入门到精通";//设置文本节点
xe1.appendchild(xesub1);//添加到<book>节点中
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);//添加到<bookstore>节点中
xmldoc.save("bookstore.xml");
//===============================================
结果为:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" isbn="2-3631-4">
<title>oberon’s legacy</title>
<author>corets, eva</author>
<price>5.95</price>
</book>
<book genre="李赞红" isbn="2-3631-4">
<title>cs从入门到精通</title>
<author>候捷</author>
<price>58.3</price>
</book>
</bookstore>

2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。
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;//转换类型
if(xe2.name=="author")//如果找到
{
xe2.innertext="亚胜";//则修改
break;//找到退出来就可以了
}
}
break;
}
}

xmldoc.save("bookstore.xml");//保存。
//==================================================
最后结果为:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" isbn="2-3631-4">
<title>oberon’s legacy</title>
<author>corets, eva</author>
<price>5.95</price>
</book>
<book genre="update李赞红" isbn="2-3631-4">
<title>cs从入门到精通</title>
<author>亚胜</author>
<price>58.3</price>
</book>
</bookstore>

3、删除 <book genre="fantasy" isbn="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" isbn="2-3631-4">节点。
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")=="update李赞红")
{
xe.removeall();//删除该节点的全部内容
}
}
xmldoc.save("bookstore.xml");
//===========================================
最后结果为:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book isbn="2-3631-4">
<title>oberon’s legacy</title>
<author>corets, eva</author>
<price>5.95</price>
</book>
<book>
</book>
</bookstore>

4、显示所有数据。
xmlnode xn=xmldoc.selectsinglenode("bookstore");

xmlnodelist xnl=xn.childnodes;

foreach(xmlnode xnf in xnl)
{
xmlelement xe=(xmlelement)xnf;
console.writeline(xe.getattribute("genre"));//显示属性值
console.writeline(xe.getattribute("isbn"));

xmlnodelist xnf1=xe.childnodes;
foreach(xmlnode xn2 in xnf1)
{
console.writeline(xn2.innertext);//显示子节点点文本
}

}



本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/195642,如需转载请自行联系原作者

相关文章
|
XML 存储 JavaScript
|
XML 设计模式 JSON
XML介绍,以及基本操作
XML介绍,以及基本操作
117 0
|
XML 存储 JavaScript
进阶——python——XML 基本操作
进阶——python——XML 基本操作
进阶——python——XML 基本操作
|
XML 数据格式
DOM4j读取XML基本操作及常见错误
             前段时间用dom4j读取配置文件的时候,当时报了个小bug,后来中间去做别的东西了,几天又把那段代码拿出来调了下,发现ok了。  一,基本使用        为了使用这个东西读配置文件,首先引入:              下面是测试代码:     pu...
1083 0
|
XML .NET C#
C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)     http://www.cnblogs.com/mingmingruyuedlut/archive/2011/01/27/1946239.
1061 0
|
5月前
|
Android开发 开发者
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。
102 2
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
|
12月前
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
230 1
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)

相关课程

更多