Q删除元素
QDom Remove Element
我使用以下代码来解析XML文件。我的目的是检测<Name>
元素是否为"ABC",我将删除其<Malfunction>
内容。但是,我的代码只允许我读取"名称"并删除所有带有 <Name>
的元素标签。
是否可以检查<Name>
元素标签是否包含"ABC"并删除<Malfunction></Malfunction>
标签中的内容,包括标签本身?
任何帮助,不胜感激。谢谢。
。.cpp:
QDomNodeList nodes = doc.elementsByTagName("Name");
while(!nodes.isEmpty())
{
QDomNode node = nodes.at(0);
node.parentNode().removeChild(node);
}
。.xml:
<InjectedMalfunctions>
<Malfunction>
<Segment>ABC</Segment>
<Name>ABC failure</Name>
<Time>00:00:00</Time>
</Malfunction>
<Malfunction>
<Segment>DEF</Segment>
<Name>DEF failure</Name>
<Time>00:00:00</Time>
</Malfunction>
</InjectedMalfunctions>
输出.xml:
<InjectedMalfunctions>
<Malfunction>
<Segment>ABC</Segment>
<Time>00:00:00</Time>
</Malfunction>
<Malfunction>
<Segment>DEF</Segment>
<Time>00:00:00</Time>
</Malfunction>
</InjectedMalfunctions>
通缉.xml:
<InjectedMalfunctions>
<Malfunction>
<Segment>DEF</Segment>
<Name>DEF failure</Name>
<Time>00:00:00</Time>
</Malfunction>
</InjectedMalfunctions>
以下代码删除所有<Malfunction>
标记,而不仅仅是第一个<Malfunction>
组。
编辑.cpp:
QDomNodeList nodes = doc.elementsByTagName("Name");
while(!nodes.isEmpty())
{
QDomNode node = nodes.at(0);
node.nodeValue().contains("ABC");
QDomNode toRemove = node.parentNode();
toRemove.parentNode().removeChild(toRemove);
}
最终这将起作用。检查 ABC:
node.nodeValue().contains("ABC");
删除完成
QDomnode toRemove = node.parentNode();
toRemove.parentNode().removeChild(toRemove);
相关文章:
- C++如何通过用户输入删除列表元素
- 使用函数"remove"删除重复元素
- 如何通过 getter 函数删除矢量的元素?
- 从控制台中删除最后打印的元素
- 如何从存储在std::映射中的std::集中删除元素
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 删除列表中的第n个元素
- 从矢量中删除元素后出现隔离错误
- 删除映射和分割错误中的一个过去结束元素
- 如何使用remove_if从矢量中删除元素
- 如何从使用 for 循环中的矢量大小的矢量中删除元素
- 从矢量中删除空元素
- 关于比较两个无序数组并删除 a[] 中可以在 b[] 中找到的元素的问题
- 删除指针数组 (C++) 中的元素
- 删除列表 c++ 中的最后 3 个元素
- 比较 2 个向量并从第二个向量中删除在第一个 - c++ 中找不到的元素
- 为什么通过 vector<reference_wrapper> 的元素删除引用的值<T>不会使向量无效?
- 从std::multiset的第i个元素删除到末尾
- 删除 [] 是否等于每个元素删除.C++
- std::列出元素删除后节点的内存回收