修改xml文件的节点属性
2011-09-15 11:21
260 查看
同样是我遇到的问题,修改xml节点属性,不需要全部来重写所有节点。来,看重点:
我用的TinyXml,其他的解析器原理应该也是一样的,有时间你们可以通过我的方法去测试一下.
比如有这么一段xml描述:
<map>
<Area id="123">
<Event name="liugh" script="liugh.script" />
</Area>
</map>
我要修改为修改成以下的描述,即将Event节点的name属性值"liugh"修改为"NoName":
<map>
<Area id="123">
<Event name="NoName" script="liugh.script" />
</Area>
</map>
代码来了
std::string stdPath = "***";
TiXmlDocument doc(stdPath .c_str());
if(!doc.LoadFile())
{
return;
}
const TiXmlElement* map = doc.FirstChildElement("map");
if(!map)
{
return;
}
const TiXmlElement* node = map->FirstChildElement("Area");
while(node)
{
int id;
node->Attribute("id",&id);
if((123== id) && node) //找到符合条件的节点
{
TiXmlElement* xEvent= const_cast<TiXmlElement*>(node->FirstChildElement("Event")); //去掉只读属性,否则就报错了,不同的xml解析器规则也不同,因xml而异了
if(xEvent)
{
xEvent->SetAttribute("name","NoName"); //改变该节点的值
}
}
node = node->NextSiblingElement("Area");
}
doc.SaveFile(strPath); //最后别忘记保存,否则工作就白做了!
That's all!
不信吗?自己动手试试吧!
我用的TinyXml,其他的解析器原理应该也是一样的,有时间你们可以通过我的方法去测试一下.
比如有这么一段xml描述:
<map>
<Area id="123">
<Event name="liugh" script="liugh.script" />
</Area>
</map>
我要修改为修改成以下的描述,即将Event节点的name属性值"liugh"修改为"NoName":
<map>
<Area id="123">
<Event name="NoName" script="liugh.script" />
</Area>
</map>
代码来了
std::string stdPath = "***";
TiXmlDocument doc(stdPath .c_str());
if(!doc.LoadFile())
{
return;
}
const TiXmlElement* map = doc.FirstChildElement("map");
if(!map)
{
return;
}
const TiXmlElement* node = map->FirstChildElement("Area");
while(node)
{
int id;
node->Attribute("id",&id);
if((123== id) && node) //找到符合条件的节点
{
TiXmlElement* xEvent= const_cast<TiXmlElement*>(node->FirstChildElement("Event")); //去掉只读属性,否则就报错了,不同的xml解析器规则也不同,因xml而异了
if(xEvent)
{
xEvent->SetAttribute("name","NoName"); //改变该节点的值
}
}
node = node->NextSiblingElement("Area");
}
doc.SaveFile(strPath); //最后别忘记保存,否则工作就白做了!
That's all!
不信吗?自己动手试试吧!
相关文章推荐
- php xml修改节点中的属性和值
- VB读取XML文件,selectNodes获取节点属性
- Java如何获取xml文件中子节点的属性
- C#中操作xml文件(插入节点、修改、删除)
- Dom4j解析xml文件-递归遍历所有节点和属性
- 详解SimpleXML添加_修改_删除_遍历XML节点属性
- Java如何获取xml文件中子节点的属性
- java DOM 对xml文件的操作【分别对节点、节点属性、节点内容增删改查】
- C# 关于XML遍历新增节点,修改属性小例
- ASP.NET(C#)对XML文件节点的添加删除修改示例
- Java如何获取xml文件中子节点的属性
- 详解SimpleXML添加_修改_删除_遍历XML节点属性
- 简单的XML文件操作(xml文件生成,节点追加、遍历、修改、删除)
- 修改XML文件某节点的属性值
- Dom4j解析xml文件-递归遍历所有节点和属性
- 【C#】C#操作XML方法:新增、修改和删除节点与属性
- Dom4j解析xml文件-递归遍历所有节点和属性
- c#对xml多属性节点的增加,删除,修改操作源码
- Qt中使用DOM对XML文件的标签属性进行修改
- XML文件操作(如果节点中有多个同名节点,但是每个节点的属性不同)