我有一个大型XML文件(2000-3000行),我想通过。目的是显示Qtreeview中的所有数据,并突出显示可能出错的数据。
我已经使用Qt示例(XBEL)和Jasmin Blanchette的书进行了测试,但它并没有帮助我作为一个例子(除了我知道不再支持XMLStream)。
解析和显示Qtreeview中突出显示的某些数据的最佳方法是什么? (QTreeview仅用于我的示例中的数据解释,我知道如何处理它)
要解析的文件的摘录:
<Description xmlns="file://DeviceDescription-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.software.com/schemas/Description-1.0.xsd Description-1.0.xsd file://Description-1.0.xsd OEMcCustom.xsd " xmlns:se="file://Description-1.0.xsd">
<Connector connectorId="1" explicit="false" hostpath="-1" interface="Serial" moduleType="91" role="child" alwaysmapping="true">
<Parameter ParameterId="8000" type="std:BOOL">
<Attributes download="false" offlineaccess="read" />
<Default>true</Default>
<Name>NameConfig</Name>
<Description>Use the new NameConfig format</Description>
</Parameter>
<Parameter ParameterId="12345692" type="localTypes:CHANNEL_PACKED">
<Attributes />
<Default>
<Element name="FunctionCode">3</Element>
<Element name="ReadOffset">16#0000</Element>
<Element name="ReadLength">4</Element>
<Element name="WriteOffset">0</Element>
<Element name="WriteLength">0</Element>
<Element name="Trigger">5</Element>
<Element name="CycleTime">100</Element>
<Element name="ErrorHandling">true</Element>
<Element name="EnableRegisterBitMapping" />
</Default>
<Name>Channel 1</Name>
<Description>ChannelConfig</Description>
</Parameter>
</Connector>
</Description>
答案 0 :(得分:1)
http://qt-project.org/doc/qt-5.1/qtxml/qtxml-module.html
请注意页面底部的说明:
模块不再被主动维护。请使用 而不是Qt Core中的
QXmlStreamReader
和QXmlStreamWriter
类。
http://qt-project.org/doc/qt-5.1/qtcore/qxmlstreamreader.html#details
需要一段时间来计算出这个并使用它,但它应该是最快的。获得所有数据验证和错误检查可能有点痛苦,但可行。
将它添加到树视图可能需要更多考虑......但这里有一些指示:
http://qt-project.org/doc/qt-5.1/qtwidgets/qtreeview.html#details
http://qt-project.org/doc/qt-4.8/itemviews-simpledommodel.html
http://qt-project.org/doc/qt-4.8/examples-xml.html
如果仍然没有足够的链接,这里还有更多:
http://qt-project.org/doc/qt-4.8/qsimplexmlnodemodel.html#details
http://qt-project.org/doc/qt-4.8/xmlpatterns-filetree.html
希望有所帮助。