Допустим, у нас есть следующий XML-документ:
<root>
<options>
...
</options>
<children>
<child name="first">12345</child>
<child name="second">
<additionalInfo>abcd</additionalInfo>
</children>
</root>
Я хотел бы получить строковое представление «дочерних» узлов и добавить их в массив (я не хочу терятьСинтаксис XML, поэтому .text () не вариант).Например, первый дочерний элемент будет выглядеть так:
QString child = "<child name="first">12345</child>";
Я использовал следующий код для получения элементов:
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");
}
}
Проблема в том, что doc.isNull всегда возвращает false (похоже, я не могу преобразовать элемент в документ).Есть ли способ, как я могу это сделать?
Редактировать:
Я хотел бы добавить, что QString здесь не является обязательным.В принципе, любой класс, который впоследствии можно будет использовать для извлечения данных, в порядке (я сохраню эти узлы и позже буду использовать их для инициализации других объектов).Важно то, что я должен иметь возможность доступа к этим значениям, даже если исходный документ был уничтожен. Например, можно сохранять эти элементы непосредственно в некотором массиве (например, QList), который можно использовать для доступа к ним позже.