Эта статья посвящена тому, как можно проанализировать XML-файл в Java.
XML: XML расшифровывается как расширяемый язык разметки. Он был разработан для хранения и транспортировки данных. Это было разработано, чтобы быть и человеческим и машиночитаемым. Вот почему цели разработки XML подчеркивают простоту, универсальность и удобство использования в Интернете.
Почему StAX вместо SAX?
- SAX : SAX — это API модели push, что означает, что это API, который вызывает ваш обработчик, а не ваш обработчик, который вызывает API. Таким образом, синтаксический анализатор SAX «помещает» события в ваш обработчик. С этой push-моделью API вы не можете контролировать, как и когда анализатор выполняет итерации по файлу. Как только вы запускаете синтаксический анализатор, он повторяется до конца, вызывая ваш обработчик для каждого события XML во входном XML-документе.
SAX Parser --> Handler
- StAX : модель извлечения StAX означает, что именно ваш класс-обработчик вызывает API синтаксического анализатора, а не наоборот. Таким образом, ваш класс-обработчик контролирует, когда парсер должен перейти к следующему событию во входных данных. Другими словами, ваш обработчик «вытягивает» события XML из анализатора. Кроме того, вы можете остановить анализ в любой момент. Синтаксический анализатор StAX обычно используется вместо средства чтения файлов, когда входные данные или база данных представлены в виде автономного или онлайнового файла XML. Модель извлечения сводится к следующему:
Handler --> StAX Parser
Также анализатор StAX может читать и записывать в документы XML, в то время как SAX может только читать. SAX обеспечивает проверку схемы, т. Е. Если теги вложены правильно или XML правильно написан, но StAX не предоставляет такой метод проверки схемы.
Реализация
Идея о том, как работает парсер StAX:
Входной файл: это образец входного файла, созданный автором в качестве примера, чтобы показать, как используется анализатор StAX. Сохраните его как data.xml и запустите код. Файлы базы данных XML обычно имеют большой размер и содержат много тегов, вложенных друг в друга.
<company class="geeksforgeeks.org">
<name>Kunal Sharma</name>
<title>Student</title>
<email>kunal@example.com</email>
<phone>(202) 456-1414</phone>
</company>
|
Выход :
name = geeksforgeeks.org Kunal Sharma Student kunal@example.com (202) 456-1414
Как работает StAX в приведенном выше коде?
После создания EventReader в приведенном выше коде с помощью фабричного шаблона для создания устройства чтения XML-файлов он в основном начинается с чтения тега <…>. Как только появляется тег <…>, для логической переменной устанавливается значение true, указывающее, что тег был открыт. Это сопоставление тегов выполняется путем определения, является ли это начальный тег или конечный тег. Поскольку тег <…> указывает на начало, следовательно, он соответствует StartElement. Далее идет часть чтения данных. На следующем шаге он считывает символ / данные путем сопоставления элемента с помощью isCharacters, это делается только в том случае, если начальный тег, который нам требуется, открыт или его логическая переменная установлена в значение true. После этого происходит закрытие элемента, обозначенного тегом </…>. Как только он встречает </ ..>, он проверяет, какой из элементов был открыт или установлен в значение true, и устанавливает для этого элемента логическое значение false или закрывает его.
По сути, каждое событие сначала открывает тег, читает его данные, а затем закрывает его.
- Ссылки :
- https://docs.oracle.com/javase/tutorial/jaxp/sax/parsing.html
- https://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.6/tutorial/doc/SJSXP2.html
Эта статья предоставлена Куналом Шармой . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Shift Reduce Parser в компиляторе
- Java.util.LinkedList.poll (), pollFirst (), pollLast () с примерами на Java
- Java lang.Long.numberOfTrailingZeros () метод в Java с примерами
- Java.util.Collections.rotate () Метод в Java с примерами
- Java.util.concurrent.Phaser класс в Java с примерами
- Java.util.Collections.disjoint () Метод в Java с примерами
- Java lang.Long.byteValue () метод в Java с примерами
- Java lang.Long.reverse () метод в Java с примерами
- Java.util.LinkedList.offer (), offerFirst (), offerLast () в Java
- Java.util.LinkedList.peek (), peekfirst (), peeklast () в Java
- Java lang.Long.highestOneBit () метод в Java с примерами
- Java lang.Long.numberOfLeadingZeros () метод в Java с примерами
- Класс Java.util.concurrent.RecursiveTask в Java с примерами
- Класс Java.util.concurrent.RecursiveAction в Java с примерами
- Java.util.function.BiPredicate интерфейс в Java с примерами
0.00 (0%) 0 votes