XML解析之Dom

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" 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值