XML 在QT中解析
XML parsing in QT
我是QT新手
我正在开发应用程序来解析 XML 文件。但是文件格式看起来像这样
<Class name="ABC">
<LayoutEntry name="ABB" type="class:ABB"/>
<LayoutEntry name="ACC" type="class:ACC"/>
<LayoutEntry name="ADD" type="class:ADD"/>
</Class>
<Class name="ABB"> //Declared in class ABC
<LayoutEntry name="ABB1" type="class:ABB1"/>
<LayoutEntry name="ABB2" type="class:ABB2"/>
</Class>
<Class name="ABB1"> //Declared in class ABB
<LayoutEntry name="ABB1" value=ABB1"/>
</Class>
<Class name="ABB2">
<LayoutEntry name="ABB2" value=ABB2"/>
</Class>
请有人建议我使用 QT 中的任何库或方法来解析这种类型的 XML 。
谢谢
您可以使用 QDomDocument
和所有以 qDom 开头的 class。
这样你就可以得到一个对应于你的文档的对象。
每个标记都是一个 QDomNode
,您可以调用 getParam、getChild 或 getParent 等方法。
您可以使用模块 QtXML 5.8, which is part of the Qt-framework. There you can find the class QDomDocument ( QDomDocument-doc ) 例如。
QDomNodeList list;
list = document.elementsByTagName("Parent");
int ChildCount = list.at(0).childNodes().count();
qDebug() << "ChildCount = " << ChildCount;
QString child1,child2,child3;
for(int i=0; i < ChildCount; i++)
{
child1 = list.at(0).childNodes().at(0).toElement().text();
child2 = list.at(0).childNodes().at(1).toElement().text();
child3 = list.at(0).childNodes().at(2).toElement().text();
}
我是QT新手
我正在开发应用程序来解析 XML 文件。但是文件格式看起来像这样
<Class name="ABC">
<LayoutEntry name="ABB" type="class:ABB"/>
<LayoutEntry name="ACC" type="class:ACC"/>
<LayoutEntry name="ADD" type="class:ADD"/>
</Class>
<Class name="ABB"> //Declared in class ABC
<LayoutEntry name="ABB1" type="class:ABB1"/>
<LayoutEntry name="ABB2" type="class:ABB2"/>
</Class>
<Class name="ABB1"> //Declared in class ABB
<LayoutEntry name="ABB1" value=ABB1"/>
</Class>
<Class name="ABB2">
<LayoutEntry name="ABB2" value=ABB2"/>
</Class>
请有人建议我使用 QT 中的任何库或方法来解析这种类型的 XML 。 谢谢
您可以使用 QDomDocument
和所有以 qDom 开头的 class。
这样你就可以得到一个对应于你的文档的对象。
每个标记都是一个 QDomNode
,您可以调用 getParam、getChild 或 getParent 等方法。
您可以使用模块 QtXML 5.8, which is part of the Qt-framework. There you can find the class QDomDocument ( QDomDocument-doc ) 例如。
QDomNodeList list;
list = document.elementsByTagName("Parent");
int ChildCount = list.at(0).childNodes().count();
qDebug() << "ChildCount = " << ChildCount;
QString child1,child2,child3;
for(int i=0; i < ChildCount; i++)
{
child1 = list.at(0).childNodes().at(0).toElement().text();
child2 = list.at(0).childNodes().at(1).toElement().text();
child3 = list.at(0).childNodes().at(2).toElement().text();
}