Удаление дочернего узла в файле XML C ++ - PullRequest
0 голосов
/ 15 октября 2018

Я использую библиотеку 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 Вопрос в качестве ссылки для удаления узла (name = 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 голосов
/ 15 октября 2018

Я думаю, что проблема была в сохранении.

Я выполнил следующий оператор сохранения после if-condition, и он заработал.

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