在XML文件C ++中删除子节点

时间:2018-10-15 11:55:36

标签: c++ xml pugixml

我正在使用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>

出于测试目的,我给出了一个硬编码值,我想删除具有属性Time的节点Stamp = 14:50

XML节点删除代码::我使用此SO Question作为删除节点(名称= {Time和Attribute = 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结构。

1 个答案:

答案 0 :(得分:0)

我认为问题出在保存上。

我在if-condition之后执行了以下保存语句,它起作用了。

doc.save_file("D:/myfile.xml");