dodawanie nowych "rekordow" do plikow ..XML

0

Witam . Pisze aplikacje w javie ktora ma za zadanie laczyc sie z plikiem xml i wykonywac rozne akcje , jak na razie zrobilem odczyt z pliku xml i mecze sie na dodanie lub/i odjęciem pojedyńczego rekordu :

struktora pliku test.xml

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Newsy>
	<News1>
                <Autor>Java.sun.com</Autor>
                <Data>11.11.2005</Data>
                <Wiadomosc>
                        This is a unique area on java.sun.com where Sun engineers
                </Wiadomosc>
 	</News1>
	<News2>
                <Autor>blebleble</Autor>
                <Data>2222</Data>
                <Wiadomosc>aba</Wiadomosc>
 	</News2>
</Newsy>

java

try{	
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File("test.xml"));

Element root = doc.getDocumentElement();
NodeList children = root.getChildNodes();


//-----------------------------------------------
for(int i=0;i<children.getLength();i++)
{
Node child = children.item(i);	
if(child instanceof Element)
	{
	System.out.println("------------- next -------------");
	Element childElement = (Element)child;
	System.out.println("childElement:"+childElement.getNodeName().trim());
	
	
	
	for(Node chiNode = childElement.getFirstChild();chiNode != null ;chiNode = chiNode.getNextSibling())
		{
		if(chiNode.getTextContent().trim().equals("")==false)
			{	
			System.out.println("chiNode.getNextSibling():"+chiNode.getTextContent().trim());	
			}
		}	
}
}
//------------------------------------------------
}
catch (Exception e) 
{
	e.printStackTrace();
}

}

i to dziala , ale jak chce dodac "rekord" to probuje w taki sposob :

Element book = doc.createElement("book");
doc.appendChild(book);

moze to i dobry sposob ale niewiem gdzie w kodzie to umiescic .... prosze o helpa :(

0
Element book = doc.createElement("book");
doc.appendChild(book);

moze to i dobry sposob ale niewiem gdzie w kodzie to umiescic

Sposób nie jest najlepszy. Jest prawie dobry. To, co robisz to próba dodania węzła do dokumentu. Tyle, że ten dokument ma już węzeł główny o nawie Newsy i ten węzeł elegancko się pobiera przez doc.getDocumentElement();
XML może mieć tylko jeden główny węzeł (korzeń), dlatego nie pozwala na dodanie drugiego.
W tej sytuacji spróbuj:

Element book = doc.createElement("book");
root.appendChild(book);

Miejsce w kodzie to już ma mniejsze znaczenie. Popróbuj, powinno zadziałać

0

Dodalem tak jak mowisz

Element book = doc.createElement("book");
root.appendChild(book);

no i w pliku .xml nic sie nie zmienilu ale jak sobie ustawilem zeby mi wiesz wypisywal co sie znajduje w pliku (System.out.println("childElement:"+childElement.getNodeName().trim());)
to wydruk ze niby sie znajduje .... nierozumiem :/

0

No bo nie ma podstaw, żeby w pliku coś się zmieniło. Instrukcja
Document doc = builder.parse(new File("test.xml"));
ładuje z pliku zapisany dokument xml do zmiennej doc, następnie robisz operacje na tej zmiennej. Jeżeli chcesz to zapamiętać, to na koniec zmienną doc trzeba zapisać, żeby była plikiem xml. Można to zrobić używając interfejsu z DOM Level 3 Load and Save oraz przez transformacje (o ile dobrze pamiętam).

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