pugixml读取某节点属性double p[3],没有属性时写入默认值并且保存记录
时间: 2023-07-15 21:15:04 浏览: 95
XML和属性文件读取和写入
可以使用pugixml库的`attribute()`函数来获取节点属性,如果属性不存在,则可以使用默认值并将其写入节点。示例代码如下:
```cpp
#include "pugixml.hpp"
#include <iostream>
int main()
{
pugi::xml_document doc;
if (!doc.load_file("example.xml"))
{
std::cerr << "Failed to load XML file\n";
return 1;
}
// 获取节点
pugi::xml_node node = doc.child("root").child("node");
// 获取属性
double p[3];
p[0] = node.attribute("p1").as_double(1.0); // 默认值为1.0
p[1] = node.attribute("p2").as_double(2.0); // 默认值为2.0
p[2] = node.attribute("p3").as_double(3.0); // 默认值为3.0
// 打印属性值
std::cout << "p1 = " << p[0] << "\n";
std::cout << "p2 = " << p[1] << "\n";
std::cout << "p3 = " << p[2] << "\n";
// 写入属性
node.remove_attribute("p1");
node.remove_attribute("p2");
node.remove_attribute("p3");
node.append_attribute("p1") = p[0];
node.append_attribute("p2") = p[1];
node.append_attribute("p3") = p[2];
// 保存文件
if (!doc.save_file("example.xml"))
{
std::cerr << "Failed to save XML file\n";
return 1;
}
return 0;
}
```
这里,我们假设XML文件的结构如下:
```xml
<root>
<node p1="0.1" p2="0.2"/>
</root>
```
如果`node`节点中不存在`p1`、`p2`、`p3`属性,则会使用默认值1.0、2.0、3.0,并将其写入节点。最后,我们通过`save_file()`函数保存修改后的XML文件。
阅读全文