Qt 4.7.4 を使用しています。私のプログラムでは、QDomDocument 内の各 QDomNode に一意の識別子属性があります。特定の属性を持つすべてのノード (この場合は 1 つのノードのみ) を見つける簡単な方法はありますか?
これが可能であることを示唆するものは何も見つかりませんでしたが、質問したほうがよいと思いました。
元のノードの子ノードに識別子を配置し、識別子ノードを検索して、その親を取得できると思いますが、属性に保持することをお勧めします。
要素を自分で見つけるには、ドキュメント ツリーを再帰的にスキャンする必要があります。たとえば、特定の属性名を持つすべての要素を検索するには、次のようにします。
void findElementsWithAttribute(const QDomElement& elem, const QString& attr, QList<QDomElement> foundElements)
{
if( elem.attributes().contains(attr) )
foundElements.append(elem);
QDomElement child = elem.firstChildElement();
while( !child.isNull() ) {
findElementsWithAttribute(child, attr, foundElements);
child = child.nextSiblingElement();
}
}
QList<QDomElement> foundElements;
QDomDocument doc;
// Load document
findElementsWithAttribute(doc.documentElement(), "myattribute", foundElements);