假设我们有以下 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)中,以便以后访问它们。