Quitar elemento QDom

He usado los siguientes códigos para analizar un archivo XML. Mi objetivo es detectar si el <Name> elemento es "ABC", y eliminaré su <Malfunction> contenido. Sin embargo, mis códigos solo me permiten leer en "Nombre" y eliminar todas las etiquetas de elementos con <Name>.

¿Es posible comprobar si el <Name> etiqueta del elemento contiene "ABC" y eliminar el contenido dentro de la <Malfunction></Malfunction> etiquetas, incluidas las propias etiquetas?

Se agradece cualquier ayuda. Gracias.

.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>

Salida .xml:

<InjectedMalfunctions>
 <Malfunction>
  <Segment>ABC</Segment>
  <Time>00:00:00</Time>
 </Malfunction>
 <Malfunction>
  <Segment>DEF</Segment>
  <Time>00:00:00</Time>
 </Malfunction>
</InjectedMalfunctions>

Se busca .xml:

<InjectedMalfunctions>
 <Malfunction>
  <Segment>DEF</Segment>
  <Name>DEF failure</Name>
  <Time>00:00:00</Time>
 </Malfunction>
</InjectedMalfunctions>

El siguiente código elimina todos los <Malfunction> etiquetas, en lugar de solo la primera <Malfunction> grupo.

Editado .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);
}

preguntado el 14 de febrero de 14 a las 01:02

¿Hay alguien que pueda aconsejar sobre esto? Muy apreciado. Gracias. -

1 Respuestas

Eventualmente esto funcionará. Compruebe el ABC:

node.nodeValue().contains("ABC");

eliminar completo

QDomnode toRemove = node.parentNode();
toRemove.parentNode().removeChild(toRemove);

Respondido 14 Feb 14, 06:02

Probé los códigos mencionados, pero eliminó todos los <Malfunction> etiquetas ¿Estoy haciendo algo mal aquí? Por favor vea mi versión editada arriba. - Wallace

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.