[JAVA] parsowanie xmla

0

Witam.
Czytałem pare postów na tym forum odnośnie czytania xmla w javie, jednak nie wyczerpuje to mojego zapotrzebowania...
Prosiłbym o jakiś przykład, mój problem jest taki:
mam plik xml:

<?xml version="1.0" encoding="ISO-8859-1"?> <database> <person> <name>Ala</name> <surname> Kot </surname> <age> 25 </age> </person> <person> <name>Jurek</name> <surname> Ogórek</surname> <age> 30 </age> </person> </database>

Jak teraz przeczytac tę bazę danych do javy??
Chcę np. utworzyc listę ArrayList osób, których dane mam w tym pliku xml, mógłbym stworzyc klasę, która wczytuje znak po znaku plik i sprawdza jaki to tag teraz jest, ale to nie o ot chodzi, skoro są do tego narzędzia (SAX, DOM), ale niestety nigdzie nie mogę znależć prostego tutoriala, który opisywałby, to co chcę zrobić.
Czy ktoś mógłby mi w tym pomóć?

Pozdrawiam.

0

Witam.
Nie chce tworzyc nowego watku, zeby nie zasmiecac forum.
Zainstalowalem Jdom-1.0 (build.bat), ale moj netBeans 5.0 nie widzi go...
gdy natrafia na import org.jdom.*; - wypisuje mi, ze nie ma takiego package'a...
Co z tym zrobic ?

Pozdrawiam.

0

Spróbuj wykorzystać XPath.

Taki przykład na szybko:

package test;

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXParseException;

public class XMLTest
{
    
    public static void main(String[] args)
    {
	try
	{
	    XPath xpath = XPathFactory.newInstance().newXPath();
	    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
	    Document document = builder.parse(new File("D:\\plik.xml"));
	    
	    NodeList list = (NodeList) xpath.evaluate("/database/person", document, XPathConstants.NODESET);

	    int i;
	    for(i = 0; i < list.getLength(); i++)
	    {
		Node n = list.item(i);
		String name = (String) xpath.evaluate("./name", n, XPathConstants.STRING);
		String surname = (String) xpath.evaluate("./surname", n, XPathConstants.STRING);
		Integer age = Integer.parseInt( (String) xpath.evaluate("./age", n, XPathConstants.STRING) );
		
		System.out.println(name + ", " + surname + ", " + age);
	    }
	}
	catch(SAXParseException e)
	{
	    System.out.println("Blad parsowania" + ", linia " + e.getLineNumber() + ", " + e.getSystemId());
	    System.out.println(e.getMessage());
	}
	catch(Exception e)
	{
	    e.printStackTrace();
	}
    }
    
}
0

Dzieki.
Bardzo mi pomogłeś.

Pozdrawiam.

0

Mam kolejny problem.
Nie chce tworzyc kolejnych wątków, żeby nie śmiecić na serwerze, wieć napisze tutaj.

Mam plik takiej postaci:

<?xml version="1.0" encoding="ISO-8859-1"?> <database> <person> <name>Ala</name> <surname> Kot </surname> <age> 25 </age> <note> <title>Hello</title> <msg>Hello my dear Ala... </msg> </note> <note> <title>Meeting</title> <msg>12.03 Be there, and the deal will go down.. </msg> </note> </person> <person> <name>Jurek</name> <surname> Ogórek</surname> <age> 30 </age> <note> <title>Office</title> <msg>Your new Office is ready</msg> </note> </person> </database>

I teraz, kiedy czytam analogicznie do poprzedniego przykladu, który mi podałeś to notatki dla każdej z osób się mieszają, tzn, program wyświetla, notatki Ali i notatki Jurka, jako notatki Ali, a potem to samo, jako notatki Jurka, mam nadzieje, ze napisałem to dość zrozumiale...

Już wiem!! Dzieki za pomoc, bardzo mi sie przydala.

Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1