[Java] Xml. Zapis oraz tworzenie struktury.

0

Witam

Mam duzy problem z obsluga xml w jave. Dokladnie chodzi mi o stworzenie np takiej struktory.

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

<database>
        <book>
                <przyklad1>test</przyklad1>
                <przyklad2>test </przyklad2>
        </book>
        <book>
                <przyklad1>test</przyklad1>
                <przyklad2> test </przyklad2>
        </book>

</database>

Oraz zapisanie jej w pliku. Potrafie tylko odczytac caly plik i wybrac element. niestety nie wiem jak go zmodyfikowac oraz jak stworzyc cala strukture w bazie.

Dzieki z gory za jakis przyklad na ktorym bede mogl sie oprzec. Niestety tutoriale w necie sa tak napisane, ze glowa boli. Korzystam z xpath.

0

niby jak korzystasz z xpath . xpath sluzy do czego inneog , napisz jaka metoda chcesz tworzyc ten dokument (sax,dom,jdom). to ci napisze

0

Moze troszke zle to ujolem. Do odczytu danych z xml urzywalem dom + xpath. Wchodzilem do odpowiedniej galezi drzewa przy pomocy nodelist, pozniej node do ustalenia pozycji obiektu, ktory chcialem odczytac. Nastepnie:

String przyklad = (String) xpath.evaluate("./przyklad", n, XPathConstants.STRING);

I to wystarczylo. Niestety jak juz wczesniej wspominalem nie zdolalem rozwiklac zagadki tworzenia calego drzewa od poczatku wraz z zapisem, modyfikowaniem danych w xml.

Chcialbym Stworzyc ten dokument w dom. Probowalem wykorzystac tutoriale, ktore znalazlem w necie ale sa tak strasznie napisane, ze nic z tego nie wyszlo.

0

wkleje ci kod który kiedyś sam napisałem może będzie pomocny, służył do odczytania z pliku ale analogicznie używając SAXWritera mozna pisac
Plik XML miał z grubasz strukture:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> <newsy> <news> <autor>Java.sun.com</autor> <data>11.11.2005</data> <wiadomosc> This is a unique area on java.sun.com where Sun engineers </wiadomosc> </news> ... </newsy> A parser tak: import java.io.File; import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class parserXML {

	String NewsNode = "News";
	String AutorNode = "Autor";
	String DataNode = "Data";
	String WiadomoscNode = "Wiadomosc";
	
	String Autor;
	String Data;
	String Wiadomosc;
	String Str="";

	public String parse() {
		File file = new File("c:\\news.xml");
		SAXReader reader = new SAXReader();
		Document document;
		try {
			document = reader.read(file);
		
		
		

		Element rootElement = document.getRootElement();

		for ( Iterator rootIterator = rootElement.elementIterator(); rootIterator.hasNext(); ) {
            Element News = (Element) rootIterator.next();

            	for( Iterator newsIterator = News.elementIterator(); newsIterator.hasNext(); ){
            		Element NewsNodes = (Element) newsIterator.next();

            		
            		if(AutorNode.equals(NewsNodes.getName())){
            			Autor = NewsNodes.getText();
            			Str=Str+"<div class=\"NewsHeader\">"+"Autor: "+Autor;

            		}
            		if(DataNode.equals(NewsNodes.getName())){
            			Data = NewsNodes.getText();
            			Str=Str+"Data: "+Data+"</div>";
            		}
            		if(WiadomoscNode.equals(NewsNodes.getName())){
            			Wiadomosc = NewsNodes.getText();
            			Str=Str+"<div class=\"NewsContent\">"+Wiadomosc+"</div>";
            		}
        
            	}
            	
	}
	} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
	}
	return Str;
}

}

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