Qtreeview中的大型Xml

时间:2013-10-25 15:16:02

标签: xml qt qtreeview

我有一个大型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>

1 个答案:

答案 0 :(得分:1)

http://qt-project.org/doc/qt-5.1/qtxml/qtxml-module.html

请注意页面底部的说明:

  

模块不再被主动维护。请使用   而不是Qt Core中的QXmlStreamReaderQXmlStreamWriter类。

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

希望有所帮助。