加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML解析之Dom

发布时间:2020-12-16 07:40:35 所属栏目:百科 来源:网络整理
导读:xml 文件 ?xml version="1.0" encoding="UTF-8"?librarybook id="01"titleQt/titleauthorshiming/author/bookbook id="02"titlelinux/titleauthorshiming/author/book/library 在pro 加入 QT += xml QDomDocument doc; QFile file(":/my.xml"); if(!file.ope

xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<library>
	<book id="01">
		<title>Qt</title>
		<author>shiming</author>
	</book>
	<book id="02">
		<title>linux</title>
		<author>shiming</author>
	</book>
</library>

在pro 加入 QT += xml
QDomDocument doc;
    QFile file(":/my.xml");

    if(!file.open(QIODevice::ReadOnly))
    {
        return 0;
    }

    if(!doc.setContent(&file))
    {
        file.close();
        return 0;
    }
    file.close();

    //获取doc的第一个节点,即xml说明
    QDomNode firstNode = doc.firstChild();

    //输出xml说明,nodeName()为xml, nodeValue()为版本和编码信息
    qDebug() << firstNode.nodeName();                        // xml
    qDebug() << firstNode.nodeValue();                       // "version='1.0' encoding='UTF-8'"

    //返回根元素
    QDomElement docElem = doc.documentElement();            // <library>
    //返回节点的第一个子节点
    QDomNode n = docElem.firstChild();

    //如果节点不为空, 则转到下一个节点
    while(!n.isNull())
    {
        if(n.isElement())
        {
            QDomElement e = n.toElement();
            qDebug() << e.tagName();                       //book
            qDebug() << e.attribute("id");                 //01    02

            QDomNodeList list = e.childNodes();
            //便利改列表
            for(int i = 0; i < list.count(); i++)
            {
                QDomNode node = list.at(i);
                if(node.isElement())
                {
                    qDebug() << "  " << node.toElement().tagName();  
                    qDebug() << "  " << node.toElement().text();
                }
            }
        }

        n = n.nextSibling();
    }

输出结果:
"xml" 
"version='1.0' encoding='UTF-8'" 
"book" 
"01" 
   "title" 
   "Qt" 
   "author" 
   "shiming" 
"book" 
"02" 
   "title" 
   "linux" 
   "author" 
   "shiming" 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读