删除XML文件的特定节点

时间:2016-01-18 07:23:59

标签: c++ xml qt

下面我有一个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>

1 个答案:

答案 0 :(得分:0)

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();