删除 XML 文件 C++ 中的子节点
Removing child node in a XML file C++
我正在使用 PugiXml 库进行 XML 相关操作。
我的XML文件:
<CurrentStatus>
<Time Stamp= "12:30">
<price>100</price>
<amount>1</amount>
</Time>
<Time Stamp= "14:50">
<price>10</price>
<amount>5</amount>
</Time>
<Time Stamp= "16:30">
<price>10</price>
<amount>5</amount>
</Time>
</CurrentStatus>
出于测试目的,我给出了一个硬编码值,我想删除具有属性 Stamp = 14:50
.
的节点 Time
XML 节点删除代码: 我使用这个 作为删除节点的参考(名称 = Time
和属性 = 14:50
).
for (xml_node child = doc.child("CurrentStatus").first_child(); child; )
{
xml_node next = child.next_sibling();
string attributeValue = child.attribute("Stamp").as_string();
if (attributeValue == "14:50")
{
cout << "delete" << endl;
child.parent().remove_child(child);
}
child = next;
}
问题:以上代码运行没有任何错误。甚至进入了if-statement
但是为什么原来的XML文件执行后还是一样?
PS: 我确信根节点和 XML 文档在一般情况下被正确读取,因为我能够显示 XML 控制台上的结构。
我认为问题出在保存中。
我在 if-condition
之后执行了以下保存语句,它起作用了。
doc.save_file("D:/myfile.xml");
我正在使用 PugiXml 库进行 XML 相关操作。
我的XML文件:
<CurrentStatus>
<Time Stamp= "12:30">
<price>100</price>
<amount>1</amount>
</Time>
<Time Stamp= "14:50">
<price>10</price>
<amount>5</amount>
</Time>
<Time Stamp= "16:30">
<price>10</price>
<amount>5</amount>
</Time>
</CurrentStatus>
出于测试目的,我给出了一个硬编码值,我想删除具有属性 Stamp = 14:50
.
Time
XML 节点删除代码: 我使用这个 Time
和属性 = 14:50
).
for (xml_node child = doc.child("CurrentStatus").first_child(); child; )
{
xml_node next = child.next_sibling();
string attributeValue = child.attribute("Stamp").as_string();
if (attributeValue == "14:50")
{
cout << "delete" << endl;
child.parent().remove_child(child);
}
child = next;
}
问题:以上代码运行没有任何错误。甚至进入了if-statement
但是为什么原来的XML文件执行后还是一样?
PS: 我确信根节点和 XML 文档在一般情况下被正确读取,因为我能够显示 XML 控制台上的结构。
我认为问题出在保存中。
我在 if-condition
之后执行了以下保存语句,它起作用了。
doc.save_file("D:/myfile.xml");