Diciamo che abbiamo il seguente documento XML:Conversione QDomElement alla classe QString/contenitore
<root>
<options>
...
</options>
<children>
<child name="first">12345</child>
<child name="second">
<additionalInfo>abcd</additionalInfo>
</children>
</root>
Vorrei ottenere una rappresentazione di stringa dei nodi "figli" e li aggiunge in un array (I don' t voglio perdere la sintassi XML così. text() non è un'opzione). Ad esempio, il primo figlio sarà simile:
QString child = "<child name="first">12345</child>";
ho usato il seguente codice per ottenere gli elementi:
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");
}
}
Il problema è che il doc.isNull restituisce sempre false (sembra che io' m incapace di convertire l'elemento in documento). C'è un modo come posso eseguire questo?
Edit:
vorrei aggiungere che QString non è obbligatoria qui. Fondamentalmente qualsiasi classe che può essere successivamente utilizzata per recuperare i dati è ok (salverò questi nodi e li userò per inizializzare un altro oggetto in seguito). La cosa importante è che dovrei essere in grado di accedere a quei valori anche quando il documento originale è stato distrutto. Ad esempio, è possibile memorizzare quegli elementi direttamente in alcuni array (ad es. QList), che può essere usato per accedervi in seguito.
E l'operazione opposta? Data la stringa generare un QDomNode che può essere successivamente aggiunto ad un QDomDocument esistente? – Pierluigi
@Pierluigi, questa dovrebbe essere una domanda da sola. È abbastanza coinvolto. Si crea un 'QDomDocument', si usa' setContent() ', quindi si usa un' QDomDocumentFragment' per copiare il risultato in un altro documento ... –
Comment/* = 4 * non è chiuso. Quindi qui errore di sintassi. –