删除 XML 文件的特定节点

Deleting specific node of XML file

本文关键字:节点 XML 文件 删除      更新时间:2023-10-16

下面我有一个XML文件的示例,我想删除每个标头中的特定节点。我该怎么做。例如,在标题<HEADER>中,我想删除节点<ADDRESS>,不仅是它的属性,还有整个节点。<HEADER1>我需要删除属性<UMG_VAR Name="ABC" Value=1></UMG_var>,这里Name属性是唯一的。

<MAIN>
    <HEADER>
        <TITLE>ppc_ph_pios</TITLE>
        <AUTOR>DNL</AUTOR>
        <AGE>age</AGE>
        <SEX>Male</SEX>
        <PLACE>Earth</PLACE>
        <ADDRESS>abc</ADDRESS>
    </HEADER>
    <HEADER1>
          <UMG_VAR Name="RED" Value="3"></UMG_VAR>
          <UMG_VAR Name="ABC2" Value="2"></UMG_VAR>
          <UMG_VAR Name="ABC" Value="1"></UMG_VAR>
    </HEADER2>
    
</MAIN>

QDomDocument doc;
doc.setContent(oldXml);
QDomNodeList nodes = doc.elementsByTagName("element");
for (int i = 0; i < nodes.count(); ++i)
{
    QDomNode node = nodes.at(i);
    QDomElement child = node.firstChildElement("child");
    if (!child.isNull() && child.attribute("id") == "0")
    {
        node.removeChild(child);
    }
}
QString newXml = doc.toString();