Обработка XML Qt5.5 с использованием QDom

Я использую классы QDom для обработки XML-файла, я хочу, чтобы атрибуты обрабатывались в том порядке, в котором они определены в XML-файле, это важно. Однако кажется, что порядок атрибутов в «QDomNamedNodeMap» отличается.

Есть ли способ убедиться, что порядок определен в файле XML?


person SPlatten    schedule 14.04.2016    source источник


Ответы (2)


Насколько я знаю, нельзя полагаться на порядок атрибутов в XML по спецификациям. Это может быть причиной того, что ваша библиотека читает их в другом порядке, чем буквальный. Даже если вы найдете способ, вы не должны доверять ему: что, если кто-то другой сгенерирует XML для вашей программы? Подробнее о спецификациях см. здесь. Возможно, вам поможет изменение дизайна: как насчет вложенности некоторых узлов? Последовательность вложенных узлов является детерминированной.

person Felice Pollano    schedule 14.04.2016
comment
Я быстро думаю, что мне придется написать свои собственные обработчики. - person SPlatten; 14.04.2016
comment
XML, который я написал, позволяет атрибутам использовать макроссылки на другие атрибуты, что объясняет важность порядка, но автор может писать XML любым способом, который он хочет, при условии, что когда одна ссылка на другую реализована, ссылка не находится перед Другой. - person SPlatten; 14.04.2016
comment
@SPlatten лучше не делать: если кто-то другой сгенерирует xml для вас, у вас тоже будут проблемы (он может генерировать с атрибутами в другом порядке) - person Felice Pollano; 14.04.2016
comment
Если другой пишет XML, то он будет делать это в соответствии с моей спецификацией для приложения, обрабатывающего его. - person SPlatten; 14.04.2016
comment
Я хочу прочитать атрибуты в том порядке, в котором они представлены в файле. - person SPlatten; 14.04.2016
comment
XML-спецификации @SPlatten не принадлежат вам :) Если вы не можете написать спецификацию с помощью XSD (определения схемы), ваша спецификация недействительна с точки зрения xml. - person Felice Pollano; 14.04.2016
comment
Я могу написать спецификацию для определения использования XML любым способом, который я считаю нужным, это содержимое файла не имеет ничего общего с кем-либо за пределами организации, использующим его. - person SPlatten; 14.04.2016

Я написал свои собственные классы, которые читают файл и обрабатывают узлы и атрибуты, согласно моему требованию, атрибуты хранятся в том же порядке, в котором они представлены в файле.

person SPlatten    schedule 20.04.2016