Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

JAVA DOM i XML

[es] :: Java :: JAVA DOM i XML

[ Pregleda: 2739 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

y0gie
Slovenija

Član broj: 7615
Poruke: 21
*.iup.univ-avignon.fr



Profil

icon JAVA DOM i XML14.05.2003. u 15:17 - pre 254 meseci
Može mi li neko reči kako mogu da manipuliram sa XML DOM dokumentom u Javi ?
Treba mi da stavim podatke iz xml-fajla u ArrayList. Ali moram da znam hierarhiju xml-ja kako bi mogo da to napravim. Znam kako da stavim ceo XML dokument u Document i kako da ostvarim NodeList. ali dalje mi neide.

xml izgleda nekako ovako:

<books>
<book>
<link>www.nekilink.com</link>
<delimiters>
<left>neki text</left>
<right>neki drugi text</right>
</delimiters>
</book>

<book>
<link>www.nekilink.com</link>
<delimiters>
<left>neki text</left>
<right>neki drugi text</right>
</delimiters>
<delimiters>
<left>neki text</left>
<right>neki drugi text</right>
</delimiters>
<delimiters>
<left>neki text</left>
<right>neki drugi text</right>
</delimiters>
</book>

a na kraju meni treba ovakva struktura:
ArrayList link = new ArrayList();
link(www.nekilink.com) -> delimiters
link(www.nekidrugilink.com) -> delimiters, delimiters, delimiters

Struktura nije problem, nego kako staviti podatke u strukturu.

Hvala
Bez Muje nema struje
 
Odgovor na temu

bunker
Srđan Savković
Smederevo

Član broj: 4495
Poruke: 239
*.26.EUnet.yu



Profil

icon Re: JAVA DOM i XML15.05.2003. u 11:44 - pre 254 meseci
bas se ovih dana zezam sa DOM-om u javi, pa mozda mogu da ti pomognem.

za pocetak mi nije najjasniji tvoj xml, ali...

ako si vecc dosao do NodeList objekta, onda izvuci jedan po jedan element iz njega. za ono sto je izmedju tagova koristis Node#getNodeValue() metod, ali mislim da dokument mora biti opisan DTD-om da bi tako nesto izveo. u suprotnom objekat node necce vratiti svoju vrednost. Kako sam nesto malo gledao u javaDocs element ciju vrednost trazis mora biti definisan tipom CDATA.

ovo ne vazi za atribut elementa. njega mozes dobiti uvek pozivajuci metod Element#getAttribute(attrName)...

malo je rano. ajde pojasni jos sta ti treba, ako stignes do 15:00, pa ccu ti pomocci koliko mogu...


pozdrav
Nije važno stići prvi. Važno je prvo da stigneš.
 
Odgovor na temu

y0gie
Slovenija

Član broj: 7615
Poruke: 21
*.iup.univ-avignon.fr



Profil

icon Re: JAVA DOM i XML15.05.2003. u 12:43 - pre 254 meseci
Napiso sam več program ali ovakvo programiranje nije baš najbolje. Radi čak i pravilno. Hteo bih to napraviti malo elegantnije, zato što ako bi mi trebalo kasnije nešto...I ne mogu da vjerujem da je to jedini način da se čita xml. Ako je, onda java i xml baš i nista primerna nizašta nego prenos s jedne platforme na drugu.

// reading XML into data structure
public ArrayList read(String path) throws Exception
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
Document document = parser.parse( path );
Element books = document.getDocumentElement();
NodeList listBooks = books.getElementsByTagName("book");

ArrayList links = new ArrayList();
ArrayList linksArray = new ArrayList();
ArrayList lrstruct = new ArrayList();
String link = "";

for (int i=0; i<listBooks.getLength(); i++)
{
NodeList child = listBooks.item(i).getChildNodes();
linksArray = new ArrayList();
for (int j=0; j<child.getLength(); j++)
{
links = new ArrayList();

if (child.item(j).getNodeName().equals("link") && child.item(j).hasChildNodes()) {
Node textlink = child.item(j).getFirstChild();
link = (String)textlink.toString();
}
if (child.item(j).hasChildNodes() && child.item(j).getNodeName().equals("delimiters")) {
String left="";
String right = "";
boolean leftrule = false;
NodeList firstchild = child.item(j).getChildNodes();
boolean zezapisano = false;
for (int k=0; k<firstchild.getLength(); k++)
{
boolean flag = false;
if (firstchild.item(k).hasChildNodes()) {
Node nl = firstchild.item(k).getFirstChild();
if (zezapisano == true && nl.getNodeValue() != null && nl.getNodeValue() != "") {
right = nl.getNodeValue();
}
if (zezapisano == false && nl.getNodeValue() != null && nl.getNodeValue() != "") {
left = nl.getNodeValue();
zezapisano = true;
}
}
}
LR lr = new LR();
lr.L = left;
lr.R = right;
links.add(lr);
}
if (!links.isEmpty()) {
linksArray.add(links);
}
}
LRstruct LRs = new LRstruct();
LRs.link = link;
LRs.rules = linksArray;
lrstruct.add(LRs);
}

return lrstruct;
}
Bez Muje nema struje
 
Odgovor na temu

[es] :: Java :: JAVA DOM i XML

[ Pregleda: 2739 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.