учебник об обработке XML в Java 6 - PullRequest
3 голосов
/ 17 января 2010

Я немного теряюсь от всех методов обработки XML в java, xpath, sax, DOM, DocumentBuilderFactory ... разных модных словах, которые я не вижу, как они связаны ...

1) так что я думаю, мой вопрос Кто-нибудь знает хороший учебник по обработке XML в Java 6 ?, я нашел несколько, но они, кажется, старые.

2) мне нужно пройтись по дереву xml, то есть знать о разных его узлах и иметь возможность извлекать из него данные, как лучше всего это сделать?

спасибо

любая ссылка будет оценена

Ответы [ 2 ]

6 голосов
/ 17 января 2010

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

Оригинальная технология SAX - это потоковый XML-процессор. Проще говоря, вы запускаете синтаксический анализатор, и он выполняет обратные вызовы вашего кода, поскольку он встречает различные элементы XML. Ключевым моментом здесь является то, что он обрабатывает элементы XML, а не ВАШИ элементы XML. То есть он сообщит вам, когда увидит новый элемент XML (любой элемент XML) или блок текста, а не элемент ORDER или элемент ITEM. SAX видит XML чуть выше уровня токена, ваша программа должна построить представление в памяти из этого дерева.

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

Конечно, все зависит от того, что вы хотите от документа. Если вам действительно нужна вся информация из документа, то вы также можете загрузить все это в память. Если вам нужно только подмножество, то потоковый процессор может быть лучшим решением, особенно для больших документов.

Комбинацией тоже является технология под названием StAX, которая в основном дает представление, подобное DOM, потоковому XML-документу. Это означает, что вы можете работать с XML-документом так же, как с документом DOM, но анализатор будет лениво загружать информацию, которую вы хотите извлечь, что в идеале может снизить общее воздействие на память. Таким образом, это комбинация из 2 выше техники.

Для DOM и StAX существует метод, доступный для доступа к данным, называемый «XPath». XPath - это язык запросов, который дает вам доступ к отдельным элементам, но декларативным способом. Вы можете рассматривать XPath так же, как и путь к имени файла на жестком диске. Без XPath вам придется начинать с корня XML-документа и «сканировать» дерево, чтобы получить и извлечь вашу информацию. XPath абстрагирует этот процесс для вас, и он может помочь избежать значительной части шума XML-документа, особенно когда вы ищете подмножество более крупного документа.

Наконец, в Java существует технология под названием «JAXB», которая представляет собой технологию привязки XML. Это используется для сопоставления классов Java с XML. Вы указываете систему на XML-документ и возвращаете классы Java. Или вы указываете экземпляр класса Java на систему, и вы можете получить XML обратно. Для базовых случаев я нахожу JAXB довольно простым в использовании, особенно когда у меня есть контроль как над классами Java, так и за полученным XML. Кроме того, существуют другие сторонние системы привязки XML, подобные JAXB, но JAXB поставляется с Java 6.

Что касается того, что вам нужно, это действительно зависит от вас.

Большинство людей сегодня избегают SAX, так как на самом деле это немного неудобно. Это быстро и дешево, но может быть трудоемким программистом.

DOM и XPath, вероятно, наиболее распространенный метод сегодня, особенно из-за того, что он похож на современное программирование веб-страниц и на то, как браузеры работают с XML. Если у вас есть документы меньшего размера (менее 50-100 КБ), и особенно если вам нужен только поднабор данных, DOM и XPath вполне способны и просты в использовании.

Если вы планируете работать на более высоком уровне, и вам необходимо работать со всем документом, а также читать и писать XML, тогда JAXB может представлять интерес. Меня беспокоит только то, что преобразование унаследованного XML-документа в классы немного сложнее, и вы, возможно, не добьетесь успеха, пытаясь это сделать.

У всех них есть хорошие руководства, и я не буду давать ссылки. Скорее вы можете использовать это руководство, чтобы сосредоточиться на конкретной технологии XML, которая, по вашему мнению, лучше всего подойдет вашему приложению, и идти дальше.

0 голосов
/ 24 января 2010

Большинство людей сегодня избегают SAX, так как на самом деле это немного неудобно.Это быстро и дешево, но может быть трудоемким программистом.

http://code.google.com/p/jlibs/wiki/SAX2JavaBinding

приведенный выше URL показывает, как использовать силу саксофона без каких-либо сложностей.

...