windows下装的的QT SDK
程序对着教程写的 如下:
QDomDocument doc;//建立QDomDocument类对象,代表xml文档
QFile file("my.xml");//建立指向"my.xml”文件的QFile对象
if(!file.open(QIODevice::ReadOnly)) return;//以只读方式打开
if(!doc.setContent(&file)){file.close();return;}//将文件内容读到doc中
file.close();//关闭文件
QDomNode firstNode=doc.firstChild();//获得第一个节点
qDebug()<<qPrintable(firstNode.nodeName())//输出xml说明
<<qPrintable(firstNode.nodeValue());
QDomElement docElem=doc.documentElement();//返回根元素
QDomNode n=docElem.firstChild();//返回根节点的第一个子节点
while(!n.isNull())//如果节点不为空
{
if(n.isElement())
{
QDomElement e=n.toElement();//将其转换为元素
qDebug()<<qPrintable(e.tagName())//返回元素标记
<<qPrintable(e.attribute(tr("id")));//返回元素id属性的值
QDomNodeList list = e.childNodes();//获得元素e的所有子节点列表
for(int i=0;i<list.count();i++)//遍历该列表
{
QDomNode node=list.at(i);
if(node.isElement())
qDebug()<<" "<<qPrintable(node.toElement().tagName())
<<qPrintable(node.toElement().text());
}
}
n=n.nextSibling();//下一个兄弟节点
}
main.cpp中加代码:QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<library>
<book id="01">
<title>Qt</title>
<author>Zhangsan</author>
</book>
<book id="02">
<title>Linux</title>
<author>Lisi</author>
</book>
</library>
可以正常解析,为什么换成
<?xml version="1.0" encoding="UTF-8"?>
<书库>
<图书 id="01">
<书名>Qt</书名>
<作者>Zhangsan</作者>
</图书>
<图书 id="02">
<书名>Linux</书名>
<作者>Lisi</作者>
</图书>
</书库>
就无法显示结果了。 求助啊