Большой Xml в Qtreeview

У меня есть большой файл XML (2000-3000 строк), который я хочу просмотреть. Цель состоит в том, чтобы показать все данные в Qtreeview и выделить те, которые могут быть ошибочными.

Я тестировал примеры Qt (XBEL) и пример из книги Жасмин Бланшетт, но это не помогло мне в качестве примера (кроме того, я знаю, что 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>

person dlewin    schedule 25.10.2013    source источник


Ответы (1)


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

Обратите внимание на описание внизу страницы:

Модуль больше не поддерживается активно. Вместо этого используйте классы QXmlStreamReader и QXmlStreamWriter в Qt Core.

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

Надеюсь, это поможет.

person phyatt    schedule 25.10.2013
comment
Это хорошие указатели, особенно последние 2. Я улучшил вопрос, так как мне нужно больше кода интерпретации данных XML, чем QTreeview. Основная трудность заключается в том, чтобы интерпретировать эти примеры, чтобы иметь возможность просмотреть мой пример xml для извлечения каждого тега. Спасибо. - person dlewin; 31.10.2013