2009-08-30 2 views
8

Имеет ли Java встроенную библиотеку XML для генерации и анализа документов? Если нет, какую третью сторону я должен использовать?Java-встроенный XML

+0

Существует множество фреймворков xml для Java. Возможно, вы расскажете нам немного о том, для чего вам это нужно, что поможет нам найти лучшую структуру. Просто, чтобы упомянуть несколько инструментов/фреймворков Java XML: XMLBeans, Castor, JiXB, JAXB, StAX, SAX, DOM, XPAth. Хорошей отправной точкой является просмотр JAXB или статьи в Википедии по адресу http://en.wikipedia.org/wiki/Xml#Programming_interfaces. – Kolibri

+0

Большинство ответов здесь - это смешение реализации, API и библиотеки. Вам нужны ответы на библиотеки (Xalan, Xerces, Saxon, JDom) или API (JAXB) или реализации (DOM, SAX, StAX)? – dacracot

+0

@ dacracot: если вы собираетесь разделить волосы, DOM и SAX - это API, которые не реализуются. (Доказательства: пакеты «org.w3c.dom. *» И «org.xml.sax» - это в основном интерфейсы.) И если вы собираетесь различать библиотеку и реализацию, вам нужно объяснить это различие. –

ответ

7

Sun Java Runtime поставляется с реализациями Xerces и Xalan, которые обеспечивают возможность синтаксического анализа XML (через DOM и SAX), а также выполняют преобразования XSL и выполняют запросы XPath.

Тем не менее, лучше использовать API JAXP для работы с XML, поскольку JAXP позволяет не беспокоиться о используемой базовой реализации (Xerces или Crimson или любой другой). Когда вы используете JAXP, во время выполнения JRE использует поставщика услуг, который он может найти, для выполнения необходимых операций. Как указано ранее, Xerces/Xalan будет использоваться, поскольку он поставляется вместе с Sun JRE (не другими), поэтому вам не нужно загружать и устанавливать конкретный провайдер (скажем, другую версию Xerces или Crimson).

Основной учебник JAXP можно найти в The J2EE 1.4 tutorial (его из учебника J2EE, но это поможет).

Обратите внимание, что реализации Xerces/Xalan, предоставляемые Sun JRE, не будут найдены в пакетах org.apache.xerces. * Or org.apache.xalan. *. Вместо этого они будут присутствовать во внутренних пакетах com.sun.org.apache.xerces. * И com.sun.org.apache.xalan. *.

Кстати, JDOM не является парсером XML - он будет использовать предоставленный ему парсер JAXP, чтобы предоставить вам более легкую абстракцию для работы.

+0

Xerces и Xalan - это библиотеки. – dacracot

0

Вы могли бы посмотреть на пакет javax.xml, который содержит все, что нужно для работы с XML-документами в Java ...

+0

javax.xml - это только интерфейсы, определяющие библиотеку xml, ничего не используемое. – Mike

1

javax.xml пакет содержит встроенное XML-решение на основе Java, которое на самом деле является специальной версией Xerces. Вы можете делать то, что вы просили, но использование сторонних библиотек, таких как JDOM, делает весь процесс намного проще.

4

Да. Он имеет два варианта в пакете javax.xml: DOM создает документы в памяти, а SAX - это подход, основанный на событиях.

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

+0

DOM и SAX являются реализациями. JDom - это библиотека со своим API и уникальным API DOM. – dacracot

+1

Фактически DOM и SAX будут программировать интерфейсы, а не реализации. –

1

Взгляните на JAX-B Это все чаще является «стандартным» способом обработки XML. Использует аннотации Java для упрощения модели программирования. Ссылка дает пример кода для чтения и записи XML.

0

Java API for XML Processing (JAXP) является частью стандартной библиотеки JavaSE. JAXP позволяет вам кодировать стандартный интерфейс и позволяет при необходимости выбирать реализацию парсера.

Java-API для обработки XML, или JAXP для краткости, позволяет приложениям анализировать и преобразовывать XML-документы с помощью API, который не зависит от частности XML процессор реализации в.JAXP также предоставляет возможность подключения , которая позволяет приложениям легко переключаться между конкретными XML-процессорами .

1

Java действительно поставляется с большим набором пакетов и классов для обработки XML. Они являются частью Standard Edition JDK и расположены под пакетом javax.xml.

Помимо чтения XML и писать его с DOM или SAX, эти пакеты также выполнять XSL transformations, JAX-B объект маршалинг и демаршаллинг, XPath обработки и веб-службы SOAP обработки. Я советую вам больше узнать об этом в Интернете в отличных учебниках Sun.

0

Как сказал выше ... Java SDK теперь поставляется с Xerces и Xalan. Xalan только реализует версию 1.0 API XSLT, поэтому, если вы хотите 2.0, вы должны посмотреть на Саксон из Майкла Кей.

1

Я не могу сказать вам, какой из них использовать (указано несколько требований, а там - это десятки библиотек), но я бы серьезно подумал о XOM (here).

Автор: Eliotte Rusty Harold, вполне полный с точки зрения спецификации XML и вообще отлично. Я нашел его очень простым в использовании. См. Ссылку выше для мотивации Гарольда и критики других решений.

+0

+1 XOM более прост в использовании, более гибкий –