Java Architecture for XML Binding -- набор инструментов для ява, которые помогают, парсить дефиниции схем, генерить соответсвующие ява-классы, которые можно использовать для построения документов соотвествующих этой схеме и подальшей их гененерации в хмл.
JAXB2 -- это следующая версия, которая помогает все делать еще проще.
JAXB2 идет в связке с инструментарием для работы с вебсервисами JWSDP2.0(Java Web Services Developers Pack 2.0)
Вот пример схемы schema.xsd:
Дальше нужно использовать тулзовину, которая является XJC (XML Java Compiller):
JAXB2 -- это следующая версия, которая помогает все делать еще проще.
JAXB2 идет в связке с инструментарием для работы с вебсервисами JWSDP2.0(Java Web Services Developers Pack 2.0)
Вот пример схемы schema.xsd:
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="catalog" type="catalogType"/>
<xsd:complexType name="catalogType">
<xsd:sequence>
<xsd:element ref="journal" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="section" type="xsd:string"/>
<xsd:attribute name="publisher" type="xsd:string"/>
</xsd:complexType>
<xsd:element name="journal" type="journalType"/>
<xsd:complexType name="journalType">
<xsd:sequence>
<xsd:element ref="article" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="article" type="articleType"/>
<xsd:complexType name="articleType">
<xsd:sequence>
<xsd:element name="title" type="xsd:string"/>
<xsd:element name="author" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="level" type="xsd:string"/>
<xsd:attribute name="date" type="xsd:string"/>
</xsd:complexType>
</xsd:schema>
/path/to/jaxb/bin/xjc.sh -p my.package schema.xsdПосле чего мы получим пакет my.package с классами:
- ArticleType.java
- CatalogType.java
- JournalType.java
- ObjectFactory.java
JAXBContext jaxbContext=JAXBContext.
newInstance("my.package");
Marshaller marshaller=jaxbContext.
createMarshaller();
ObjectFactory factory=new ObjectFactory();
CatalogType catalog=(CatalogType)
(factory.createCatalogType());
catalog.setSection("my catalog");
catalog.setPublisher("my publisher");
ArticleType articleType =
factory.createArticleType();
articleType.setAuthor("an author");
articleType.setTitle("a nice article");
articleType.setLevel("rant");
JournalType journal =
factory.createJournalType();
journal.getArticle().add(articleType);
catalog.getJournal().add(journal);
File file = new File("c:/jaxb2example.xml");
marshaller.
setProperty("jaxb.formatted.output", true);
marshaller.marshal(catalog,
new FileOutputStream(file));
Unmarshaller unmarshaller =
jaxbContext.createUnmarshaller();
CatalogType c = (CatalogType)
unmarshaller.unmarshal(file);
System.out.println("author is = " +
c.getJournal().get(0).getArticle().
get(0).getAuthor());
А вот хмл файл который получится в итоге:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<catalogType section="my catalog"
publisher="my publisher">
<journal>
<article level="rant">
<title>a nice article</title>
<author>an author</author>
</article>
</journal>
</catalogType>
Для процесса компиляции и рантайма необходимо в класспазе иметь следующие джарники:
jwsdp-2.0/jaxb/lib/jaxb-api.jar jwsdp-2.0/jaxb/lib/jaxb-impl.jar jwsdp-2.0/jaxb/lib/jaxb-xjc.jar
Комментариев нет:
Отправить комментарий