次の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など)に直接格納して、後でアクセスすることができます。