XSD xs: список путаницы - PullRequest
       29

XSD xs: список путаницы

1 голос
/ 28 января 2012

Может ли кто-нибудь объяснить мне использование типа данных xs:list?Это может хорошо подойти для моего приложения, так как .xml файл должен иметь список (меток), который мне нужен для создания списка объектов с этой меткой.У меня вопрос: нужно ли циклически проходить по элементам списка (и заполнять ими коллекцию внутри моей программы) или есть какой-то автоматизированный механизм, который заполняет коллекцию списком XML?Если мне нужно сделать это вручную, в чем разница между xs:list и строкой, разделенной пробелами?

Надеюсь, мне удалось ответить на мой вопрос!

РЕДАКТИРОВАТЬ: Я использую Qtразобрать XML.Вероятно, SAX маршрут.

Ответы [ 3 ]

2 голосов
/ 28 января 2012

Поскольку вы не указываете конкретный процессор (например, JAXB или XSD.EXE или т. Д.), Он не может быть конкретным ... Хотя, как правило, список (и объединения в этом отношении) плохо поддерживаются.

В идеальном мире инструменты должны видеть, что это список, и сгенерированный код (в сценарии привязки XML к коду) должен предоставить вам поле, тип массива, который даст вам уже проанализированные вещи. Там, где инструменты не хватает, вы должны делать это вручную, без разницы.

Однако, если вы также выполните проверку, то, по крайней мере, каждый элемент в списке будет тщательно проверен для вас; тогда как без этого вы - опять же - самостоятельно.

2 голосов
/ 28 января 2012

Если вы используете xs:list, то он будет проанализирован и представлен как структура данных коллекции / массива, если вы используете генераторы кода. Если вы просто используете строку, разделенную пробелами, она будет отображаться как обычная строка, и вы будете нести ответственность за синтаксический анализ.

Разница только в том, что вы используете генераторы кода на основе xsd. Если вы анализируете, используя API низкого уровня, такие как SAX или DOM, то нет никакой разницы.

0 голосов
/ 24 мая 2012

На самом деле, класс QXmlQuery делает именно то, что я хотел. Его метод bool QXmlQuery::evaluateTo ( QStringList * target ) const требует последовательности значений xs:string и заполняет ими target.

...