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
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
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
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
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 ;)