Supongamos que tenemos el siguiente documento XML:conversión de QDomElement a la clase QString/contenedor
<root>
<options>
...
</options>
<children>
<child name="first">12345</child>
<child name="second">
<additionalInfo>abcd</additionalInfo>
</children>
</root>
me gustaría obtener una representación de cadena de los nodos "niño" y los añade en una matriz (I don' Quiero perder la sintaxis XML para que .text() no sea una opción. Por ejemplo, el primer hijo se vería así:
QString child = "<child name="first">12345</child>";
He utilizado el siguiente código para obtener los elementos:
QDomDocument doc;
QDomElement element;
element = xml->documentElement();
if(element.isNull() == false)
{
element = element.firstChildElement("children");
if(element.isNull()) return;
element = element.firstChildElement("child");
while(element.isNull() == false)
{
doc = element.toDocument();
if(doc.isNull() == false)
{
// save string into array
array.append(doc.toString());
}
element = element.nextSiblingElement("child");
}
}
El problema es que el doc.isNull siempre devuelve falso (se parece a I' m no puede convertir el elemento en documento). ¿Hay alguna manera de cómo puedo realizar esto?
Editar:
me gustaría añadir que no es obligatorio QString aquí. Básicamente, cualquier clase que pueda usarse posteriormente para recuperar los datos está bien (guardaré estos nodos y los usaré para inicializar otros objetos más adelante). Lo importante es que debería poder acceder a esos valores incluso cuando el documento original haya sido destruido. Por ejemplo, es posible almacenar esos elementos directamente en una matriz (por ejemplo, QList), que se puede usar para acceder a ellos más adelante.
¿Qué pasa con la operación opuesta? Dada la cadena, ¿se genera un QDomNode que luego se puede agregar a un QDomDocument existente? – Pierluigi
@Pierluigi, eso debería ser una pregunta en sí misma. Es bastante complicado. Crea un 'QDomDocument', usa' setContent() ', luego usa' QDomDocumentFragment' para copiar el resultado en otro documento ... –
Comment/* = 4 * no está cerrado. Entonces aquí el error de sintaxis. –