QT:读取xml文件并使用DOM解析器对其进行解析

用户名

我对xml不太满意,但是我的基本xml文件看起来像这样。

<MAIN_HEADER>

  <HEADER>
    <TITLE>my_title</TITLE>
    <AUTOR>DNL</AUTOR>
    <NAME>John</NAME>
    <AGE>abc</AGE>
    <SEX>male</SEX>
    <PLACE>abc</PLACE>
    <INI_FILE>abc</INI_FILE>

  </HEADER>

我想做的是,我需要找到2-3个标签,例如NAME&SEX,并将属性(John,Male)存储在另一个变量中。

到现在为止,我已经能够使其读取xml文件。

void MainWindow::XMLParser()
{
        QString path=MainWindow::getWorkingDirectory()+"\\0_Config\\";
        QString string;
        string = path + ui->ConfigFiles_combo->currentText(); \\THIS IS WHERE´IT DETERMINES WHICH XML FILE IT IS
        qDebug()<<string;
        QDomDocument document;
        //load the file
        QFile file(string);
        if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
        {
            qDebug()<<"Failed to open the file";

        }

        else
        {
            if(!document.setContent(false))
            {
                qDebug()<<"Failed to load document";

            }
            file.close();
        }
        QDomElement root = document.firstChildElement();
        qDebug()<<"finished";

}

如何使它搜索确切的标签并将其存储在另一个变量中?

拉姆征服者

你为什么setContent(false)又有?看起来您刚刚复制了The Badger的代码。尝试这个。

void MainWindow::XMLParser()
{
    // don't worry about path separator, Qt will take of it
    QString string = MainWindow::getWorkingDirectory() + "/0_Config/" + ui->ConfigFiles_combo->currentText();
    qDebug()<<string;
    QDomDocument document;
    //load the file
    QFile xmlFile(string);
    if (!xmlFile.exists() || !xmlFile.open(QFile::ReadOnly | QFile::Text)) {
        qDebug() << "Check your file";
        return;
    }
    QDomDocument domDocument;
    domDocument.setContent(&xmlFile);
    QDomElement topElement = domDocument.documentElement();
    QDomNode domNode = topElement.firstChild();
    while (!domNode.isNull()) {
        QDomElement domElement = domNode.toElement();
        if (!domElement.isNull()) {
            //qDebug() << domElement.tagName();
            if (domElement.tagName() == "HEADER") {
                QDomNode node = domElement.firstChild();
                while (!node.isNull()) {
                    QDomElement element = node.toElement();
                    if (!element.isNull()) {
                        const QString tagName(element.tagName());
                        if (tagName == "NAME") {
                            qDebug() << "Name is:" << element.text();
                        } else if (tagName == "SEX") {
                            qDebug() << "Sex is:" << element.text();
                        }
                    }
                    node = node.nextSibling();
                }
            }
        }
        domNode = domNode.nextSibling();
    }
}

这是我的控制台输出

Name is: "John"
Sex is: "male"
Name is: "Doe"
Sex is: "male"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

使用DOM解析器从XML读取注释

来自分类Dev

使用QT进行XML解析

来自分类Dev

使用DOM解析器更新xml文件时创建的新行

来自分类Dev

使用DOM解析器解析XML困难

来自分类Dev

使用Nokogiri SAX解析器解析XML文件

来自分类Dev

使用xml解析器读取xml

来自分类Dev

使用DOM解析器Java解析带有嵌套重复元素名称的xml文档。

来自分类Dev

使用PHP Simple HTML DOM解析器解析输出

来自分类Dev

在qt DOM xml解析器中使用setContent(&file)加载较大的文件时出错

来自分类Dev

读取大型csv文件,使用uniVocity解析器进行验证和写出

来自分类Dev

在Java中读取xml文件和解析器

来自分类Dev

使用PHP简单DOM解析器进行递归

来自分类Dev

如何在Java中使用DOM解析器解析XML文件时查找具有子节点的节点

来自分类Dev

使用DOM解析器读取XML注释

来自分类Dev

使用SAX解析器解析包含umlaute的XML文件

来自分类Dev

是否可以在Android中使用DOM解析器解析特定的XML?

来自分类Dev

剃刀解析器读取.cshtml文件

来自分类Dev

使用DOM解析器更新xml文件时创建的新行

来自分类Dev

无法使用php dom解析器解析特定的链接

来自分类Dev

文件解析器-如何读取行

来自分类Dev

使用DOM解析器Java解析具有嵌套重复元素名称的xml文档。

来自分类Dev

如何在不使用Java的DOM或SAX解析器的情况下解析XML?

来自分类Dev

使用Java中的dom解析器将xml文件转换为json对象

来自分类Dev

如何使用Java中的DOM解析器在XML文件中声明doctype,xml版本和编码?

来自分类Dev

使用xml dom解析器获取元素

来自分类Dev

使用Jackson解析器进行解析

来自分类Dev

在Java中读取xml文件和解析器

来自分类Dev

如何在Java中使用DOM解析器解析XML文件时查找具有子节点的节点

来自分类Dev

使用PHP简单DOM解析器进行递归

Related 相关文章

  1. 1

    使用DOM解析器从XML读取注释

  2. 2

    使用QT进行XML解析

  3. 3

    使用DOM解析器更新xml文件时创建的新行

  4. 4

    使用DOM解析器解析XML困难

  5. 5

    使用Nokogiri SAX解析器解析XML文件

  6. 6

    使用xml解析器读取xml

  7. 7

    使用DOM解析器Java解析带有嵌套重复元素名称的xml文档。

  8. 8

    使用PHP Simple HTML DOM解析器解析输出

  9. 9

    在qt DOM xml解析器中使用setContent(&file)加载较大的文件时出错

  10. 10

    读取大型csv文件,使用uniVocity解析器进行验证和写出

  11. 11

    在Java中读取xml文件和解析器

  12. 12

    使用PHP简单DOM解析器进行递归

  13. 13

    如何在Java中使用DOM解析器解析XML文件时查找具有子节点的节点

  14. 14

    使用DOM解析器读取XML注释

  15. 15

    使用SAX解析器解析包含umlaute的XML文件

  16. 16

    是否可以在Android中使用DOM解析器解析特定的XML?

  17. 17

    剃刀解析器读取.cshtml文件

  18. 18

    使用DOM解析器更新xml文件时创建的新行

  19. 19

    无法使用php dom解析器解析特定的链接

  20. 20

    文件解析器-如何读取行

  21. 21

    使用DOM解析器Java解析具有嵌套重复元素名称的xml文档。

  22. 22

    如何在不使用Java的DOM或SAX解析器的情况下解析XML?

  23. 23

    使用Java中的dom解析器将xml文件转换为json对象

  24. 24

    如何使用Java中的DOM解析器在XML文件中声明doctype,xml版本和编码?

  25. 25

    使用xml dom解析器获取元素

  26. 26

    使用Jackson解析器进行解析

  27. 27

    在Java中读取xml文件和解析器

  28. 28

    如何在Java中使用DOM解析器解析XML文件时查找具有子节点的节点

  29. 29

    使用PHP简单DOM解析器进行递归

热门标签

归档