DOC PREVIEW
Penn CIT 597 - Java Architecture for XML Binding

This preview shows page 1-2-22-23 out of 23 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 23 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 23 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 23 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 23 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 23 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

JAXBWhat is JAXB?Advantages and disadvantagesHow JAXB worksA first exampleAdding complexityImproving the binding schemaMarshallingLimitations of JAXBA minimal binding schemaMore complex schemataDefault bindings, IDefault bindings, IIDefault bindings, IIIDefault bindings, IVCustomizing the binding schemaPrimitive attributesConversions to Objects, IConversions to Objects, IICreating enumerationsContent modelsUsing JAXBThe EndJan 13, 2019JAXBJava Architecture for XML Binding2What is JAXB?JAXB is Java Architecture for XML BindingSAX and DOM are generic XML parsersThey will parse any well-structured XMLJAXB creates a parser that is specific to your DTDA JAXB parser will parse only valid XML (as defined by your DTD)DOM and JAXB both produce a tree in memoryDOM produces a generic tree; everything is a NodeJAXB produces a tree of Objects with names and attributes as described by your DTD3Advantages and disadvantagesAdvantages:JAXB requires a DTDUsing JAXB ensures the validity of your XMLA JAXB parser is actually faster than a generic SAX parserA tree created by JAXB is smaller than a DOM treeIt’s much easier to use a JAXB tree for application-specific codeYou can modify the tree and save it as XMLDisadvantages:JAXB requires a DTDHence, you cannot use JAXB to process generic XML (for example, if you are writing an XML editor or other tool)You must do additional work up front to tell JAXB what kind of tree you want it to constructBut this more than pays for itself by simplifying your applicationJAXB is new: Version 1.0 dates from Q4 (fourth quarter) 20024How JAXB worksJAXB takes as input two files: your DTD and a binding schema (which you also write)A binding schema is an XML document written in a “binding language” defined by JAXB (with extension .xjs)A binding schema is used to customize the JAXB outputYour binding schema can be very simple or quite complexJAXB produces as output Java source code which you compile and add to your programYour program will uses the specific classes generated by JAXBYour program can then read and write XML filesJAXB also provides an API for working directly with XMLSome examples in this lecture are taken from the JAXB User’s guide, http://java.sun.com/xml/jaxb/docs.html5A first exampleThe DTD: <!ELEMENT book (title, author, chapter+) ><!ELEMENT title (#PCDATA) ><!ELEMENT author (#PCDATA)><!ELEMENT chapter (#PCDATA) >The schema: <xml-java-binding-schema> <element name="book" type="class" root="true" /></xml-java-binding-schema>The results: public Book(); // constructorpublic String getTitle();public void setTitle(String x);public String getAuthor();public void setAuthor(String x);public List getChapter();public void deleteChapter();public void emptyChapter();Note 1: In these slides we only show the class outline, but JAXB creates a complete class for youNote 2: JAXB constructs names based on yours, with good capitalization style6Adding complexityAdding a choice can reduce the usefulness of the parser<!ELEMENT book (title, author, (prologue | preface), chapter+)><!ELEMENT prologue (#PCDATA) ><!ELEMENT preface (#PCDATA) >With the same binding schema, this gives:public Book();public List getContent();public void deleteContent();public void emptyContent();An improved binding schema can give better results7Improving the binding schema<xml-java-binding-schema> <element name="book" type="class" root="true"> <content> <element-ref name="title" /> <element-ref name="author” /> <choice property="prologue-or-preface" /> </content> </element></xml-java-binding-schema>Result is same as the original, plus methods for the choice:public Book(); // constructor. . .public void emptyChapter();public MarshallableObject getPrologueOrPreface();public void setPrologueOrPreface(MarshallableObject x);8Marshallingmarshal, v.t.: to place or arrange in ordermarshalling: the process of producing an XML document from Java objectsunmarshalling: the process of producing a content tree from an XML documentJAXB only allows you to unmarshal valid XML documentsJAXB only allows you to martial valid content trees into XML9Limitations of JAXBJAXB only supports DTDs and a subset of XML SchemasLater versions may support more schema languagesJAXB does not support the following legal DTD constructs:Internal subsetsNOTATIONsENTITY and ENTITIESEnumerated NOTATION types10A minimal binding schemaA JAXB binding schema is itself in XMLStart with: <xml-java-binding-schema version="1.0ea">The version is optional“ea” stands for “early access,” that is, not yet releasedPut in: <element name="rootName " type="class" root="true" />for each possible root elementAn XML document can have only one rootHowever, the DTD does not say what that root must beAny top-level element defined by the DTD may be a rootThe value of name must match exactly with the name in the DTDEnd with: </xml-java-binding-schema>11More complex schemataJAXB requires that you supply a binding schemaAs noted on the previous slide, this would be<xml-java-binding-schema version="1.0ea"> <element name="rootName" type="class" root="true" /></xml-java-binding-schema>With this binding schema, JAXB uses its default rule set to generate your “bindings”A binding is an association between an XML element and the Java code used to process that elementBy adding to this schema, you can customize the bindings and thus the generated Java code12Default bindings, IA “simple element” is one that has no attributes and only character contents:<!ELEMENT elementName (#PCDATA) >For simple elements, JAXB assumes: <element name="elementN ame" type="value"/>JAXB will treat this element as an instance variable of the class for its enclosing elementThis is the default binding, that is, this is what JAXB will assume unless you tell it otherwiseFor example, you could write this yourself, but set type="class"For simple elements, JAXB will generate these methods in the class of the enclosing element: void setElementName(String x); String getElementName();We will see later how to convert the #PCDATA into some type other than String13Default bindings, IIIf an element is not simple, JAXB will treat it as a classAttributes and simple subelements are treated as instance


View Full Document

Penn CIT 597 - Java Architecture for XML Binding

Documents in this Course
DOM

DOM

21 pages

More DOM

More DOM

11 pages

Rails

Rails

33 pages

DOM

DOM

21 pages

RELAX NG

RELAX NG

31 pages

RELAX NG

RELAX NG

31 pages

RELAX NG

RELAX NG

31 pages

RELAX NG

RELAX NG

31 pages

Rake

Rake

12 pages

Ruby

Ruby

58 pages

DOM

DOM

21 pages

Tomcat

Tomcat

16 pages

DOM

DOM

21 pages

Servlets

Servlets

29 pages

Logging

Logging

17 pages

Html

Html

27 pages

DOM

DOM

22 pages

RELAX NG

RELAX NG

30 pages

Servlets

Servlets

28 pages

XHTML

XHTML

13 pages

DOM

DOM

21 pages

DOM

DOM

21 pages

Servlets

Servlets

26 pages

More CSS

More CSS

18 pages

Servlets

Servlets

29 pages

Logging

Logging

17 pages

Load more
Download Java Architecture for XML Binding
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Java Architecture for XML Binding and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Java Architecture for XML Binding 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?