c++ - 我可以在 QDomDocument 中找到所有具有给定属性的 XML 节点吗?

标签 c++ xml qt

我正在使用 Qt 4.7.4。在我的程序中,QDomDocument 中的每个 QDomNode 都有一个唯一的标识符属性。有没有一种简单的方法可以定位具有给定属性的所有节点(在本例中,只有一个节点)?

我没有发现任何迹象表明这是可能的,但我想我还是问问吧。

我想我可以将标识符放在原始节点的子节点中,搜索标识符节点,然后获取其父节点,但我更愿意将其保留在属性中。

最佳答案

您将需要递归扫描文档树以自行查找元素。例如,要查找具有给定属性名称的所有元素:

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);

关于c++ - 我可以在 QDomDocument 中找到所有具有给定属性的 XML 节点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17836558/

相关文章:

C++:如何从.dat文件中的特定行读取

c++ - 使用模板在 vector 和数组之间交替

C++ 运算符 []

xml - 从 XSLT 中的路径创建嵌套树结构

php - 从表单获取信息并使用 php 写入 xml 文件?

c++ - QWidgets 是否为成员(member)?

c++ - Qt编译错误: C2280: attempting to reference a deleted function

c++ - Qt 在 QtWebEngine View 中显示 QImage 或像素图(从 C++ 到 HTML)

xml - Applescript - 解析 XML

c++ - QThreadPool & QRunnable & 静态函数