1 / 13

Java XML

Java XML. Tehnologii Java XML. Asigura persistenta datelor in diverse tipuri de aplicatii Tehnologii : JAXP: Java API for XML Procesing (SAX, DOM) JAXB: Java Architecture for XML Binding. XML.

salaam
Télécharger la présentation

Java XML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java XML

  2. Tehnologii Java XML • Asigurapersistenta datelor in diverse tipuri de aplicatii • Tehnologii: • JAXP: Java API for XML Procesing (SAX, DOM) • JAXB: Java Architecture for XML Binding

  3. XML • XML este un standard pentrudescriereastructuriidocumentelorfolosind un limbaj de descriere • Caracteristici: • Format text pentrudescriereadatelorceeace-l face simplu de utilizatsiusoreditabil • Standardizat. Exista API-urispecializatepentruparsare • Applicatiile care utilizeaza XML trebuiesastabileascadoarparteasemantica a reprezentariidatelor

  4. Elemente de structura XML Taguri – contin metainformatii legate de structura si semnatica datelor Sintaxa: <tag> continut </tag> sau <tag continut /> Atribute - sunt definite prin perechi nume-valoare in interiorul unui tag <point x=“72” y=“13” /> Un document XML incepe cu o declaratie: <?xml version="1.0" encoding="UTF-8" ?> Forma arborescenta: Contine un element radacina Contine alte elemente incuibate cuprinse intre 2 tag-uri pereche

  5. JAXB JAXB (Java Architecture for XML Binding) oferă o modalitate de conversie între aplicaţii dezvoltate în limbajul de programare Java şi scheme XML. O aplicatie JAXB poate executa doua sarcini: - salvarea (marshalling) de obiecte Java in fisiere XML, cu posibilitatea de a crea si fisierele de structura XSD - construirea obiectelor Java din fisiere XML pe baza unei scheme XSD (unmarshalling) Pentru crearea/citirea schemelor se folosesc utilitarele schemagen si xjc

  6. Citirea unei scheme prin xjc Sunt generate clasele Java pornind de la fisierul de descriere XSD. Etape: 1. Se copiaza fisierul XSD in folderul proiectului 2. Se lanseaza fereastra de commanda Command Prompt 3. Se executa comanda prin utilitarul xjc Exemplu. Destinatia fisierelor sursa va fi folderul src. Pachetul va fi model. xjc -d src -p model schema.xsd Crearea schemelor Prin utilitarul schemagen. Exemplu. Fisierele class sunt in folderol bin. Fisierele sursa sunt in folderul src\model. Clasa radacina este Personal descrisa in Personal.java. Numele implicit al schemei: schema1.xsd javac -d bin src\model\*.java schemagen -cp bin src\model\Personal.java

  7. Serializarea campurilor/proprietatilor @XmlAccessorType - Este legata de serializarea campurilor/proprietatilor. Poate fi aplicat la nivel de pachet sau la nivel de clasa. Valori: @XmlAccessorType(XmlAccessType.FIELD); // Sunt serializate automat campurile nonstatice si netransient. Proprietatile numai prin prin efectul altei adnotari JAXB. @XmlAccessorType(XmlAccessType. PROPERTY); // Serializare automata a proprietatilor nonstatice si netransient. Campurile numai prin efectul altei adnotari JAXB. @XmlAccessorType(XmlAccessType. PUBLIC_MEMBER); // Serializare automata a campurilor/proprietatilor publice. Celelate numai prin efectul altei adnotari JAXB. Este tipul implicit @XmlAccessorType(XmlAccessType. NONE); // Serializare automata doar prin efectul altor adnotari JAXB.

  8. Adnotari de structura @XmlRootElement; // defineşte elementul rădăcină din cadrul arborelui XML parametrii: public abstract String name; // Numele elementului Xml. In lipsa este luat numele clasei public abstract String namespace; // Numele de namespace Xml @XmlType(propOrder={"atr2","atr1",.. }); // permite stabilirea structurii documentului XML prin indicarea ordinii în care atributele clasei vor fi copiate @XmlElement; // Mapeaza o proprietate/camp la un element XML. Se aplica proprietatilor si/sau campurilor nonstatice si netranziente public abstract String name; //numele elementului XML. In lipsa: numele proprietatii/campului @XmlElementWrapper ;// Generează un element de acoperire (incuibare) în jurul unei reprezentari XML. Este utilizat în primul rând pentru evidentierea unei colecții. public abstract String name; //numele acoperirii. In lipsa: numele proprietatii/campului

  9. JAXB Api Crearea unui obiect JAXBContext Un obiect JAXBContext constituie punctual de start intr-o aplcatie JAXB. Obiectul JAXBContext contine informatii de mapare XML-Java. public static JAXBContext newInstance(Class...classesToBeBound) throws JAXBException; // Este furnizata lista claselor recunoscute Salvarea schemei XML Salvarea schemei se poate face programmatic prin intermediul unui obiect SchemaOutputResolver. public abstract class SchemaOutputResolver extends Object; Metoda: public abstract Result createOutput(String namespaceUri, String suggestedFileName) throws IOException; // Decide locul in care va fi salvata schema XML si-l va intoarce sub forma unui obiect Result

  10. public class StreamResult extends Object implements Result; // Clasa utilizata pentru generarea unor output-uri de tip XML, plain Text, HTML, sau alte forme de descriere text de tip markup. Constructori: public StreamResult(File f); public StreamResult(OutputStream outputStream); public StreamResult(Writer writer); Salvarea schemei se face prin metoda JAXBContext: public void generateSchema(SchemaOutputResolver outputResolver) throws IOException;

  11. Exemplu Marshaller msh = jaxbC.createMarshaller(); SchemaOutputResolver resolver = new SchemaOutputResolver() { public Result createOutput(String namespaceUri, String suggestedFileName) throws IOException { return createResult("schema.xsd"); } }; jaxbC.generateSchema(resolver); } ... public Result createResult(String suggestedFileName) throws IOException { File file = new File(suggestedFileName); StreamResult result = new StreamResult(file); result.setOutputStream(new FileOutputStream(file)); return result; }

  12. Salvarea obiectelor in XML (marshalling) Un obiect Marshaller salveaza continutul arborelui de obiecte intr-un fisier XML. Obiectul Marshaller se obtine din JAXBContext: public abstract Marshaller createMarshaller() throws JAXBException; Serializarea arborelui in XML se face prin metoda: void marshal(Object jaxbElement, File output) throws JAXBException; Proprietati marshalling: void setProperty(String name, Object value) throws PropertyException; // Pot fi stabilite anumite proprietati de care sa se tina seama la salvare Exemplu: msh.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true/false); // Specifica daca se utilizeaza formatarea fisierului output (linii separate si indentare de linie). Valoarea implicita este false.

  13. Citirea fisierelor XML (unmarshalling) Consta in deserializarea si constituirea arborelui de obiecte Java. Sunt folosite obiecte Unmarshaller create prin JAXBContext: public abstract Unmarshaller createUnmarshaller() throws JAXBException; Citirea: Object unmarshal(File f) throws JAXBException;

More Related