Może ktoś zademonstrować i opisać krok po kroku jak przeparsować jakiś plik/źródło zwrócone w postaci XML?
Chciałem pobrać dane z bazy w postaci XML przy pomocy PHP, ale zupełnie mi to nie wychodzi. W Javie stawiam dopiero pierwsze kroki. Bardzo proszę o jakiś prosty przykład.
0
0
W czym konkretniej problem? kXML2 jest opakowaniem (ang. wrapper) dla biblioteki XmlPull (xmlpull.org), z dosyc konkretnie opisanym API.
Zasada jest prosta:
- tworzysz parser (obiekt klasy KXmlParser)
- podpinasz do niego strumien wejsciowy, InputStream lub InputReader
- parsujesz strumien wejsciowy tag po tagu.
Do dyspozycji masz wyciaganie tagow XML, ich atrybutow, tekstu, kometarzy, ustawianie kodowania i zakresu nazw (ang. namespace). Mozesz tez wymusic konkretna strukture dokumentu (metoda reuqire(int, String, String)).
Przyklad:
String url = "http://www.w3schools.com/xml/note.xml"
HttpConnection con = null;
InputStream is = null;
try {
con = (HttpConnection) Connector.open(url);
if(con.getResponseCode() != HttpConnection.HTTP_OK) {
throw new IOException("Bad response from server!");
}
is = con.openInputStream();
KXmlParser parser = new KXmlParser();
try {
parser.setInput(is, null);
int type = parser.next();
parser.require(KXmlParser.START_TAG, null, "note");
while(type != KXmlParser.END_DOCUMENT) {
if(type == KXmlParser.TEXT) {
System.out.println("Text: " + parser.getText());
} else {
System.out.println("Tag: " + parser.getName());
}
type = parser.next();
}
} catch(XmlPullParserException xppe) {
xppe.printStackTrace();
}
} finally {
if(is != null) {
is.close();
}
if(con != null) {
con.close();
}
}
0
Dzięki wielkie za wyjaśnienie. Miałem problem już na samym początku - nie umiałem stworzyć parsera. Teraz już coś mi wychodzi, ale nie dokońca.
Potrzebuję sparsować plik w postaci:
<dane>
<osoba>
<imie>Jan</imie>
<nazwisko>Nowak</nazwisko>
</osoba>
<osoba>
<imie>Zbigniew</imie>
<nazwisko>Kowalski</nazwisko>
</osoba>
</dane>
tak, aby pobrać imię i nazwisko osoby i dodać do listy, np. Jan Nowak oraz Zbigniew Kowalski jako kolejną pozycję na liście.