Java a XML – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Java a XML – Java – Fórum – Programujte.comJava a XML – Java – Fórum – Programujte.com

 

BigBear0
Stálý člen
8. 12. 2009   #1
-
0
-

Ahojte, chtel bych poprosit o radu ohledne Javy a XML... mam strukturou jednoduche xml

<zprava>  

<datum>2002-08-01</datum>
<pro>Tomáš</pro>
<od>Jana</od>
<predmet>Předmět</predmet>
<telo>Nezapomeň na mě tenhle víkend!</telo>
</zprava>
a chci jej zpracovat pomoci Javy... nasel jsem si tutorial na JAXB https://jaxb.dev.java.net/tutorial/, ale nikde jsem tam nenasel, jak zpracovat takovyto trivialni kod... mohli byste mi poradit, jak na to? pripadne dat nejaky link na tutorial? mam pouzit jiny nastroj? nejslozitejsi struktura, kterou budu chtit zpracovat bude:
<kviz>

<polozka>
<otazka>kolik je 3 na druhou?</otazka>
<odpovedi>
<odpoved jeSpravna="false">je to 8</odpoved>
<odpoved jeSpravna="false">je to 6</odpoved>
<odpoved jeSpravna="true">je to 9</odpoved>
<odpoved jeSpravna="false">nevim</odpoved>
</odpovedi>
</polozka>
<polozka>
<otazka>je slunce vetsi nez zeme?</otazka>
<odpovedi>
<odpoved jeSpravna="false">ne</odpoved>
<odpoved jeSpravna="true">ano</odpoved>
<odpoved jeSpravna="false">jsou stejne</odpoved>
<odpoved jeSpravna="false">nevim</odpoved>
</odpovedi>
</polozka>
</kviz>
a toto budu chtit jak zpracovat ze souboru a pracovat s tim, tak i vytvorit z dat a ulozit do souboru. Dekuji :-)

Nahlásit jako SPAM
IP: 94.74.255.–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
liborb
~ Redaktor
+18
Guru
8. 12. 2009   #2
-
0
-

Většinou je to tak, že musíš dát tomu nástroji vědět, jak má to XML vypadat. Na to je třeba DTD nebo XML Schema.
A v případě JAXB je XML Schema to pravé. A jak začít? No nejlepší je vždycky začít od "Hello World", ne?

https://jaxb.dev.java.net/tutorial/section_1_3-Hello-World.html#Hello%20World

Jednoduše řečeno, musíš si vytvořit svůj předpis, jak má to XML vypadat. Něco jako:



...
<xsd:element name="kviz" type="kvizType"/>

<xsd:complexType name="kvizType">
<xsd:sequence>
<xsd:element name="polozka" type="polozkaType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>

<!-- ... a tak dale, definice polozky (jako sekvence jedné otazky a jedné odpovedi, definice otazky, definice odpovedi, definice odpověď ... -->

Nahlásit jako SPAM
IP: 85.207.166.–
dannyk0
Věrný člen
8. 12. 2009   #3
-
0
-

Vzhledem k tomu, ze jsem se s XML v jave drbal asi 3 dny zpatky, tak ti silne doporucuju pouzit knihovny jdom a jaxen. S nima je to pak pohoda vse bezi pekne, jak ma.

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
BigBear0
Stálý člen
8. 12. 2009   #4
-
0
-

To liborb: dekuji, co jsi napsal chapu a precetl jsem si to, ale prijde mi to zbytecne slozite... chci mit proste jeden snadno citelny (=> i napsatelny) soubor s prekladem aplikace. Ten budu brat jako vstupni soubor. A pak chci jako vystupni soubor vygenerovat opet snadno citelny soubor s kvizem. Zvolil jsem xml, protoze na ten kviz je xml nejvhodnejsi a tak jsem si rekl, ze i ten preklad udelam jako xml. Dany preklad bych mohl udelat jako konfigurak, nebo jiny typ souboru, ale proste jsem chtel, aby to nebylo prilis komplikovane na cteni. Kdyz mohu zvolit XML, tak proc to neudelat vsude, proc bych tam mel jeste pouzivat jiny nastroj pro neco dalsiho? Jenze pokud pouziji vyse uvedene schema, tak soubor s prekladem bude necitelny a nemuze jej udelat "kdokoliv".

To dannyk: dekuji i tobe, urcite na to kouknu... btw kdyby ses tu jeste stavil, zkus mi poslat i nejaky link na manual, tutorial, priklady ;-)

Prosim jeste o dalsi nazory, klidne i typu: "je lepsi mit preklad v konfiguraku, pouzij na to tento nastroj link, je to vpoho. A na ten kviz ti nezbyva nic jineho, nez to generovat pomoci XML schematu", nebo tak... proste prosim o dalsi nazory a napady, jak to udelat co nejelegantneji. Dekuji :-)

Nahlásit jako SPAM
IP: 94.74.255.–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
dannyk0
Věrný člen
8. 12. 2009   #5
-
0
-

Stahni si a pripoj si tyhle libky:



http://www.jdom.org/downloads/index.html

http://jaxen.codehaus.org/releases.html

A pak hezky nactes xml


SAXBuilder builder = new SAXBuilder();

try {
catalog = builder.build("katalog.xml");
} catch (Exception e) {
...
}


A nasledne treba pomoci Xpath (muj pripad) vybiras nody


List list = XPath.selectNodes(catalog, "//item");


Jinak ten jdom ma pekne zpracovanou dokumentaci i priklady a da se to z nich pochopit, takze doporucuju. Pro vice informaci viz. Ja :D

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
liborb
~ Redaktor
+18
Guru
9. 12. 2009   #6
-
0
-

Jenom pro upřesnění, XML Schema by si napsal ty, a to pouze jednou. Je to předpis, jak má to zpracovávané XML vypadat (tj. to XML by bylo, jak si chtěl). Nejpíše dříve nebo později (podle toho jak moc to budeš chtít mít dokonalé :smile1: ) se dostaneš do stavu, kdy budeš potřebovat ověřit obsahovou správnost XML (nejenom jeho validitu). Co když ti "kdokoliv" udělá kvíz, kde u každé otázky bude jedna odpověď? Případně to bude pokoušet jiným směrem (zaměňování jména tagů apod.).

A právě na tohle je XML Schema. Napíšeš ten předpis, ve kterém řekneš, jak mají být tagy poskládány za sebou, že počet odpovědí má být mezi kupříkladu 3 až 7 atd. A když to XML nebude tomu XML Schema odpovídat, tak ti to vyhodnotí jako nesprávné XML, které nebudeš zpracovávat neboli si ušetříš plno práce s ošetřováním různých chyb.

Tím nechci říct, že je to nejlepší cesta. Chci tím říct, že tahle na oko pracnější cesta má taky svoje kouzlo.

Nahlásit jako SPAM
IP: 85.207.166.–
BigBear0
Stálý člen
9. 12. 2009   #7
-
0
-

to liborb: aha... mockrat dekuji... to je tedy fajn, protoze pro me je nejvyhodnejsi pouzit JAXB... jednak je ten nastroj rozsireny a jednak by mel byt vyborny, proto jsem s tim zacal tady na foru... jenze jsem to nechapal a prislo mi to "na oko" slozite... co mam tedy presne udelat? Vytvorim si XML toho kvizu, dale vytvorim nejakou tridu MujParser rozsirujici jaxb a v ni napisu do stringu to schema a to pak "nejak" pomoci jaxb pouziji jako jakousi "sablonu" k memu zpracovavanemu xml? Omlouvam se, ze se ptam takhle do detailu, ale proc se s tim trapit, kdyz uz to nekdo zna a mohu si tim ulehcit zaklady, ne ;-)... kdybys mel chvilku, mohl bys mi, prosim, zpracovat presne ten kviz? at mam priklad, ze kteryho pochopim zaklady a pak uz to nactu z manualu... mockrat dekuji, ahoj :-)

Nahlásit jako SPAM
IP: 94.74.255.–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
liborb
~ Redaktor
+18
Guru
9. 12. 2009   #8
-
0
-

Trápit se s tím budeš muset sám, protože ti to zase o tolik neusnadním. Doporučuji ti udělat si ten Hello World příklad, na který jsem ti dal odkaz, protože to z toho pochopíš (nebo by si alespoň mohl).

A práce s XML Schema je nasledující (ve tvém případě):
- vytvoříš si schema kviz.xsd
- provedeš: xjc -p kviz kviz.xsd
- dostaneš adresář kviz s .java soubory, které odpovídají struktuře toho tvého schema
- do tvé aplikace je přidáš jako balíček (import kviz.*)

Čti dokumentaci, hledej na netu. Když budeš potřebovat poradit s něčím konkrétním, tak to můžeš zkusit, ale dělat to za tebe nebudu :smile14: .

Nahlásit jako SPAM
IP: 85.207.166.–
BigBear0
Stálý člen
9. 12. 2009   #9
-
0
-

Oki... vporadku... zvladnu to :-)... dekuji :-)

Nahlásit jako SPAM
IP: 94.74.255.–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 16 hostů

Podobná vlákna

Java - xml dom empty tag — založil Lenka

Prodej knih PHP5, MySQL, Java, XML — založil Alena Mikanová

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý