XML, избегайте дублирования тегов - PullRequest
0 голосов
/ 28 апреля 2020

Я имею дело с XML, но я едва использовал их в прошлом. Учитывая XML как это:

<?xml version="1.0" encoding="UTF-8" ?>
<testi>
    <page_title>Page Title</page_title>
    <hello_world>Hello World!</hello_world>
    <address>Address</address>
    ...long lines here...
</testi>

Как я могу быть уверен, что записи в теге <testi> не дублируются? Я бы хотел избежать чего-то подобного, потому что это испортит мой документ:

<?xml version="1.0" encoding="UTF-8" ?>
<testi>
    <page_title>Page Title</page_title>
    <hello_world>Hello World!</hello_world>
    <address>Address</address>
    ...long lines here...
    ...very long lines...
    <address>Address again, this should not be permitted because there is yet address tag!</address>
</testi>

Спасибо

1 Ответ

1 голос
/ 28 апреля 2020

Обнаружение

Обычно вы декларативно указываете, какие элементы могут появляться в testi, используя стандартный язык схемы, такой как XSD. Затем вы можете использовать проверяющий синтаксический анализатор, чтобы сообщить, соответствует ли какой-либо данный документ XML ограничениям в XSD.

В качестве альтернативы, вы можете использовать синтаксический анализатор XML на выбранном вами языке и иметь свой код отслеживать ограничения, которые важны для вас, такие как количество вхождений address в testi.

исправление

Если вы будете sh, чтобы устранить дубликаты элементов, стандартный подход заключается в написании XSLT, который предназначен для анализа и преобразования XML.

В качестве альтернативы, вы можете использовать API нижнего уровня синтаксических анализаторов XML на выбранном вами языке и иметь свой фильтр кода нежелательные address элементы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...