Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

dom4j SAXreader

1 view
Skip to first unread message

Piotr Gołębiewski

unread,
May 16, 2003, 6:49:50 AM5/16/03
to
Mam plik XML
--
<A>
<B>C</B>
</A>
--
i sekwencja
...
SAXReader SAXrd = new SAXReader();
Document doc = SAXrd.read(new File(selectedFile));
Element root = doc.getRootElement();
...
działa ok.

a teraz plik

---
<?xml version="1.0"?>
<A>
<B>C</B>
</A>
---
...
SAXReader SAXrd = new SAXReader();
Document doc = SAXrd.read(new File(selectedFile));
...
wyrzuca wyjątek:

org.dom4j.DocumentException: Error on line 1 of document : Document root
element is missing. Nested exception: Document root element is missing.
at org.dom4j.io.SAXReader.read(SAXReader.java:355)
at org.dom4j.io.SAXReader.read(SAXReader.java:219)

Faktem jest że w pierwszej linijce nie mam głównego elementu struktury, ale
jak to przeskoczyć, czyli co zrobić aby ominąć
pierwszą linijkę i ewentualnie linijki typu
<?xml-stylesheet type='text/xsl' href='baza01.xsl'?>

Piotrek


Luke

unread,
May 16, 2003, 10:19:41 AM5/16/03
to
spróbuj zastosować sekwencję:

SAXReader SAXrd = new SAXReader();

try{


Document doc = SAXrd.read(new File(selectedFile));
Element root = doc.getRootElement();

}catch(Exception e){
System.out.println(e);
}

Moze wtedy pojdzie dalej.
Tak na marginesie: nie lepiej sparsować dokument i pozniej np. wylapac jego
rootElement.

Pozdrawiam
Luke


Piotr Gołębiewski

unread,
May 16, 2003, 10:35:34 AM5/16/03
to

Użytkownik "Luke" <luke...@wp.pl> napisał w wiadomości
news:ba2oem$82d$1...@julia.coi.pw.edu.pl...

> spróbuj zastosować sekwencję:
>
> SAXReader SAXrd = new SAXReader();
>
> try{
> Document doc = SAXrd.read(new File(selectedFile));
> Element root = doc.getRootElement();
> }catch(Exception e){
> System.out.println(e);
> }
>
Niestety zmieniło się tylko forma przedstawienia błędu :(

Ale jeżli już mówisz o innym podejściu, to powiem co robię i może jakaś
sugestia

1) wybieram JFileChooser pliczek o rozszerzeniu *.xml
2) chcę go wczytać do Document lub Listy lub ArrayList lub HashMap
3) chcę wypisać (narazie) nazwy (jak już mam elementy z podpunktu 2 to nie
problem, ale mam problem z wrzuceniem tego do czegokolwiek)
4) podsumowując: Jak wczytać dowolny XML do Listy? (nie zależnie czy ma
<?xml ....?> czy tego czegoś nie ma


x
aura
temperatura
wilgotnosc
wiatr
c

przykładowy.xml
---------
<BAZA01>
<encja>
<x>1</x>
<aura>sloneczna</aura>
<temperatura>zimno</temperatura>
<wilgotnosc>duza</wilgotnosc>
<wiatr>slaby</wiatr>
<c>0</c>
</encja>
<encja>
<x>2</x>
<aura>sloneczna</aura>
<temperatura>ciepla</temperatura>
<wilgotnosc>duza</wilgotnosc>
<wiatr>silny</wiatr>
<c>0</c>
</encja>
</BAZA01>

Piotrek


005...@serwis.enbepe.pl

unread,
May 17, 2003, 3:11:54 AM5/17/03
to
> Piotrek
>
Cześć!

Myślę, że chodzi tu o białe znaki po nagłówku.
Zamień

<?xml version="1.0"?>
<A>
<B>C</B>
</A>

na

<?xml version="1.0"?><A>
<B>C</B>
</A>

przy okazji zmień jeszcze

<?xml version="1.0"?> na <?xml version="1.0" encoding="ISO-8859-2" ?>

Pozdrowienia
Andrzej


Piotr Gołębiewski

unread,
May 17, 2003, 5:00:00 AM5/17/03
to
> <?xml version="1.0"?><A>
> <B>C</B>
> </A>

Sprawdzałem nawet tak :(


<?xml version="1.0"?><A><B>C</B></A>

> <?xml version="1.0"?> na <?xml version="1.0" encoding="ISO-8859-2" ?>

Było też utf-8 utf-16

Poradziłem sobi inaczej:

Zamiast DOM4J:


SAXReader SAXrd = new SAXReader();
Document doc = SAXrd.read(new File(selectedFile));

skorzystałem z JDOM:
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File(selectedFile));

i czyta wszystko :)
Dzięki za rady

Piotrek

Ps
To że mogę wczytać dowolny poprawny XML to mnie bardzo cieszy, ale
dlaczego DOM4J się krzaczy :(

BTW: nie mogę zmieniać wyglądu pliku XML, bo jak pójdę do promotora to nie
powiem mu że klasyfikacja AQ nie działa bo plik XML "źle" wygląda ;)


0 new messages