Quitar elemento QDom
Frecuentes
Visto 1,177 equipos
0
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);
}
1 Respuestas
0
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 c++ xml qt dom getelementsbytagname or haz tu propia pregunta.
¿Hay alguien que pueda aconsejar sobre esto? Muy apreciado. Gracias. - Wallace