A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Vývojář | Apache Software Foundation |
---|---|
Aktuální verze | 5.2.0 (16. listopadu 2023) |
Platforma | Java Virtual Machine |
Vyvíjeno v | Java |
Typ softwaru | svobodný software |
Licence | licence Apache |
Web | xmlbeans |
Některá data mohou pocházet z datové položky. |
XMLBeans je framework, který umožňuje zpracovávat XML soubory v Javě. Jedná se o součást Apache Software Foundation XML project.
Popis
XMLBeans nabízí poměrně jednoduchou práci s XML soubory v Javě. Např. pro základní operace nastavení a získání hodnoty elementu používá metody set a get. Nabízí podporu pro většinu konstrukcí v schématu XML Schema. Nejprve je třeba zkompilovat XML schéma do .jar archivu, na základě kterého lze načítat a vytvářet XML soubory odpovídající danému schématu. Výsledný archiv obsahuje mimo jiné package s názvem odpovídajícím jmennému prostoru použitému v XML schématu. Package obsahuje rozhraní, které odpovídají globálním elementům z XML schématu. Kompilace se provádí z příkazové řádky příkazem:
$ scomp –out vysledny_archiv.jar kompilované_schéma.xsd
Lze kompilovat pouze soubory .xsd a .wsdl.
Příklady použití
Vytvoření XML souboru
Zde je ukázka vytvoření XML dokumentu, který odpovídá schématu album.xsd. Schéma obsahuje popis hudebního alba. Je tvořeno elementem album, který obsahuje elementy obsahující jméno interpreta, název alba, typ nosiče a elementy popisující jednotlivé skladby. Element skladba je tvořen elementy obsahujícími název skladby, délku skladby a text skladby.
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="album" type="album"></xsd:element>
<!-- globální element album obsahující podelementy interpret, nazev_alba,
neomezené množství elementů skladba a element typ_nosice-->
<xsd:complexType name="album">
<xsd:sequence>
<xsd:element name="interpret" type="xsd:string"/>
<xsd:element name="nazev_alba" type="xsd:string"/>
<xsd:element name="skladba" type="skladba" maxOccurs="unbounded"/>
<xsd:element name="typ_nosice" type="nosicTyp"/>
</xsd:sequence>
</xsd:complexType>
<!-- popis elementu skladba s atributem cislo_skladby a podelementy nazev,
delka a nepovinným elementem text-->
<xsd:complexType name="skladba">
<xsd:sequence>
<xsd:element name="nazev" type="xsd:string"/>
<xsd:element name="delka" type="delkaTyp"/>
<xsd:element name="text" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="cislo_skladby" type="xsd:int" use="required"/>
</xsd:complexType>
<!-- délka skladby musí odpovídat danému regulárnímu výrazu -->
<xsd:simpleType name="delkaTyp">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{1}:\d{1}"></xsd:pattern>
</xsd:restriction>
</xsd:simpleType>
<!-- typ nosiče musí nabývat jedné z hodnot výčtového typu -->
<xsd:simpleType name="nosicTyp">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="CD"/>
<xsd:enumeration value="LP"/>
<xsd:enumeration value="MC"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
Po zkompilování schématu je třeba vzniklý .jar archiv načíst jako knihovnu k projektu. Také je třeba přidat knihovny XMLBeans, konkrétně xbean.jar z adresáře lib. Pomocí následujícího kódu se vytvoří a zvaliduje XML soubor odpovídající tomuto schématu.
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import noNamespace.Album;
import noNamespace.Skladba;
public class Vytvoreni {
private Album album;
@SuppressWarnings("static-access")
public Vytvoreni() {
try {
//vytvoření instance odpovídající elementu album
album = Album.Factory.newInstance();
//nastavení hodnot elementů
album.setInterpret("Interpret 1");
album.setNazevAlba("Album 1");
album.setTypNosice(album.getTypNosice().forString("MC"));
//přidání skladby
Skladba skladba = album.addNewSkladba();
skladba.setCisloSkladby(01);
skladba.setNazev("Song 1");
skladba.setDelka("05:12");
//pokud je výsledek validní, uloží s do souboru hudba.xml
if(album.validate()){
album.save(new File("hudba.xml"));
}
else{
System.out.println("Dokument není validní");
}
} catch (IOException ex) {
Logger.getLogger(Vytvoreni.class.getName()).log(Level.SEVERE, null, ex);}}}
Načtení XML dokumentu
XML soubor odpovídající danému schématu lze načíst a upravovat. Následující kód načte vytvořený soubor hudba.xml, rozdělí na jednotlivé elementy, vypíše jejich obsah a následně změní jméno interpreta. Pokud bude i nadále dokument validní tak ho uloží.
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import noNamespace.Album;
import noNamespace.Skladba;
import org.apache.xmlbeans.XmlException;
public class Vypis {
public Vypis() {
try {
File file = new File("hudba.xml");
//parsování XML souboru
Album album = Album.Factory.parse(file);
//výpis hodnot elementů
System.out.println(album.getInterpret());
System.out.println(album.getNazevAlba());
System.out.println(album.getTypNosice());
for (Skladba skladba : album.getSkladbaArray()) {
System.out.println(skladba.getCisloSkladby());
System.out.println(skladba.getNazev());
System.out.println(skladba.getDelka());
System.out.println(skladba.getText());
}
//změna jména interpreta
album.setInterpret("Novy interpret");
//validace a uložení souboru
if (album.validate()) {
album.save(new File("hudba.xml"));
} else {
System.out.println("Dokument není validní");
}
} catch (XmlException ex) {
Logger.getLogger(Vypis.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Vypis.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Výpis hodnot výčtového typu
Pokud chceme zobrazit hodnoty výčtového typu, lze využít rozhraní SchemaType, které obsahuje informace o elementu. Ukázka výpisu hodnot výčtového typu pro druhy hudebních nosičů:
import org.apache.xmlbeans.XmlAnySimpleType;
import noNamespace.NosicTyp;
NosicTyp nosic = NosicTyp.Factory.newInstance();
//schemaType() vrací SchemaType pro daný element
//getEnumerationValues() vrací hodnoty výčtového typu jako pole prvků XmlAnySimpleType
for(XmlAnySimpleType typ : nosic.schemaType().getEnumerationValues()){
System.out.println(typ.getStringValue());
}
Dotazování pomocí XPath a XQuery
XMLBeans umožňuje také využití dotazovacích jazyků pro XML. Pomocí těchto jazyků lze vybrat elementy podle zadaných kritérií. Je třeba použít rozhraní XMLCursor, pomocí kterého lze procházet XML dokument a měnit elementy. XMLCursor ukazuje na nějakou výchozí pozici v dokumentu. Od této výchozí pozice bude vyhledávat. Zde je ukázka, jak by mohl vypadat upravený dotaz, který vypíše počet skladeb na albu:
File file = new File("hudba.xml");
Album album = Album.Factory.parse(file);
//vytvoření kurzoru na začátku objektu, popisujícího album
XmlCursor cursor = album.newCursor();
//metoda pro vložení příkazu dotazovacího jazyka
//$this je aktuální pozice kurzoru (element album)
cursor.selectPath("$this/skladba");
//metoda getSelectionCount vrací počet elementů, odpovídajících
//zadanému výrazu
System.out.println(cursor.getSelectionCount());
Související články
Externí odkazy
Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok. Podrobnejšie informácie nájdete na stránke Podmienky použitia.
Antény
Chemické zdroje elektriny
Chladenie v elektrotechnike
Elektrická sústava automobilu
Elektrická trakcia
Elektrické prístroje
Elektrické súčiastky
Elektrické spotrebiče
Elektrické stroje
Čítanie (elektrotechnika)
Činný výkon
Štatistická dynamika
Živý vodič
Admitancia
Antiparalelné zapojenie
Asynchrónny motor
Blúdivý prúd
Bočník (elektrotechnika)
Diak (polovodičový prvok)
Displej s kvapalnými kryštálmi
Elektrická inštalácia
Elektrická rezonancia
Elektrická sila
Elektrická vodivosť
Elektrické zariadenie
Elektrický obvod
Elektrický zvonec
Elektroenergetika
Elektromer
Elektrometer
Elektromobil
Elektromotor
Elektromotorické napätie
Elektrotechnický náučný slovník
Elektrotechnika
Elektrotechnológia
Fázor
Faradayova klietka
Frekvencia (fyzika)
Graetzov mostík
Impedancia
Indukčnosť
Induktancia
Istič
Izolácia (elektrotechnika)
Izolant
Jadro vodiča
Jednobran
Jednosmerný prúd
Joulovo teplo
Katóda
Koaxiálny kábel
Kompenzácia účinníka
Konduktometria
Konektor (elektrotechnika)
Korónový výboj
Lanko (elektrotechnika)
Leptanie
Logické hradlo
Magnetická susceptibilita
Magnetizácia (veličina)
Merný elektrický odpor
Mobilné zariadenie
Napájací zdroj
Napäťový chránič
Napäťový násobič
Nortonova veta
Odpínač
Odpojovač
OLED
Olovený akumulátor
Paralelné zapojenie
Peltierov článok
Plošná hustota elektrického prúdu
Poistka (elektrotechnika)
Posuvný prúd
Prúdový chránič
Prenosové médium
Prieletový klystrón
Primárny elektrochemický článok
Reaktancia
Rekuperácia (dopravný prostriedok)
Relé
Reproduktorová výhybka
Rezistancia
Rozhranie (interface)
Sériové zapojenie
Seebeckov jav
Sekundárny elektrochemický článok
Settopbox
Skrat
Sonar
Spínač
Spínaný zdroj
Straty v mikropásikových vedeniach
Striedavý prúd
Stupeň ochrany krytom
Svetelná výbojka
Symetrizačný člen
Technická normalizácia
Tepelné relé
Tepelne vodivostný detektor
Termočlánok
Théveninova veta
Transformátor
Transformátor s fázovou reguláciou
Trojfázová sústava
Tuhá fáza (elektronika)
Tyratrón
Usmerňovač (elektrotechnika)
Uzemnenie
Uzol (vodiče)
Vírivý prúd
Výbojka
Varistor
Ventilátor
Vodič (elektrotechnika)
Voltov stĺp
Vstavaný systém
Zásuvka (elektrotechnika)
Zdroj (elektrotechnika)
Zisk antény
Text je dostupný za podmienok Creative
Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších
podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky
použitia.
www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk