Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 3.381 pregleda

Najnovija ↓

JAVA DOM i XML 14.05.2003. u 16:17 · pre 286 meseci #1
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
Potpis
Bez Muje nema struje
Re: JAVA DOM i XML 15.05.2003. u 12:44 · pre 286 meseci #2
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
Potpis
Nije važno stići prvi. Važno je prvo da stigneš.
Re: JAVA DOM i XML 15.05.2003. u 13:43 · pre 286 meseci #3
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;
}
Potpis
Bez Muje nema struje
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme