C++ QT 5.11.3-QDomNode:can';dom元素的t打印值
我试图创建一个非常简单的函数来读取一个非常简单的XML文件,并在QTCreator控制台上打印其内容 我创建了以下XML文件:C++ QT 5.11.3-QDomNode:can';dom元素的t打印值,c++,xml,qt,qdomdocument,C++,Xml,Qt,Qdomdocument,我试图创建一个非常简单的函数来读取一个非常简单的XML文件,并在QTCreator控制台上打印其内容 我创建了以下XML文件: <SCANNERS> <SCANNER> <NAME>Test scanner</NAME> <SERIAL>10102030</SERIAL> </SCANNER> <SCANNER> <NAME
<SCANNERS>
<SCANNER>
<NAME>Test scanner</NAME>
<SERIAL>10102030</SERIAL>
</SCANNER>
<SCANNER>
<NAME>Test scanner 2</NAME>
<SERIAL>10102031</SERIAL>
</SCANNER>
<SCANNER>
<NAME>Test scanner 3</NAME>
<SERIAL>10102032</SERIAL>
</SCANNER>
<SCANNER>
<NAME>Test scanner 4</NAME>
<SERIAL>10102033</SERIAL>
</SCANNER>
<SCANNER>
<NAME>Test scanner 5</NAME>
<SERIAL>10102034</SERIAL>
</SCANNER>
</SCANNERS>
测试扫描仪
10102030
测试扫描仪2
10102031
测试扫描仪3
10102032
测试扫描仪4
10102033
测试扫描仪5
10102034
然后,我创建了以下函数,该函数应该打印每个“扫描仪”标记内的每个节点:
void printDomDocument(QString xml)
{
QDOM文档扫描仪;
QFile文件(xml);
如果(!file.open(QIODevice::ReadOnly))
{
std::cout找出了问题所在
实际上,实际的节点值似乎比子节点本身深一个节点
解决方案只是“挖”更深一层:
QDomNode n2 = e.firstChild();
std::cout << n2.nodeName().toStdString() << " " << n2.firstChild().nodeValue().toStdString() << std::endl;
n2 = n2.nextSibling();
std::cout << n2.nodeName().toStdString() << " " << n2.firstChild().nodeValue().toStdString() << std::endl;
QDomNode n2 = e.firstChild();
std::cout << n2.nodeName().toStdString() << " " << n2.firstChild().nodeValue().toStdString() << std::endl;
n2 = n2.nextSibling();
std::cout << n2.nodeName().toStdString() << " " << n2.firstChild().nodeValue().toStdString() << std::endl;
NAME Test scanner
SERIAL 10102030
NAME Test scanner 2
SERIAL 10102031
NAME Test scanner 3
SERIAL 10102032
NAME Test scanner 4
SERIAL 10102033
NAME Test scanner 5
SERIAL 10102034