jak dodać <ENTER> przy tworzeniu DOM-em pliku XML

0

Witam, wie ktoś jak dodać przy tworzeniu pliku xml entera między jedną gałęzią a drugą ?

Element imie = doc.createElement("imie");
imie.appendChild(doc.createTextNode("Marian")); 
postac.appendChild(imie);

co tutaj wpisać żeby do pliku XML trafil enter 

Element nazwisko =doc.createElement("nazwisko");
nazwisko.appendChild(doc.createTextNode("Pazdzioch")); 
postac.appendChild(nazwisko);

Jak kompiluje kod to do pliku xml trafia wszystko w jednej linijce... coś tego typu:

<postac><imie>Marian</imie><Nazwisko>Pazdzioch</Nazwisko>itd....</postac>

a chciałbym żeby wyglądał tak:

<postac>
<imie>Marian</imie>
<Nazwisko>Pazdzioch</Nazwisko>
itd....
</postac>
0

Zasadniczo to się nie da tak po prostu dodać enter'a. Wkleiłeś trochę kodu, ale nie napisałeś jak zapisujesz do pliku tekstowego. Jakkolwiek to robisz, to zapewne znajdziesz jak poszukasz jaki parametr trzeba ustawić, żeby kod był formatowany. Wtedy te entery powstawiają się mniej więcej tak jak chcesz, ale dodatkowo utworzą się wcięcia. Ze względu na taką funkcjonalność formatowania sama możliwość dodawanie entera nie jest aż tak bardzo niezbędna.

0

tak to zapisuje

TransformerFactory fabrykaTransformacji = TransformerFactory.newInstance();
		Transformer aTransformer = fabrykaTransformacji.newTransformer();
		DOMSource zrodlo = new DOMSource(doc);
		Result dest = new StreamResult(new FileOutputStream(new File("postacie2.xml"))); 
		aTransformer.transform(zrodlo, dest);
0

To spróbuj tak:

TransformerFactory fabrykaTransformacji = TransformerFactory.newInstance();
                Transformer aTransformer = fabrykaTransformacji.newTransformer();
                DOMSource zrodlo = new DOMSource(doc);
                Result dest = new StreamResult(new FileOutputStream(new File("postacie2.xml")));
aTransformer.setOutputProperty(OutputKeys.INDENT, "yes");
                aTransformer.transform(zrodlo, dest);
0

Dzięki, działa :), ale w tym przypadku gdy uwuwam jakąś gałąs to zostaje pusty pasek

<postac>
<imie>Marian</imie>
////////////////////////////////////////////////// ten właśnie pusty pasek :/
</postac>

Wiesz może jak to wykluczyć ? żeby po usunięciu czegoś plik się sam wyrównał

<postac>
<imie>Marian</imie>
</postac>
0

Nie wiedziałem, że tak się robi, ale skoro tak mówisz, to pewnie tak jest. Można spróbować użyć DOM Level 3 LSSerializer i "format-pretty-output". Tyle, że to podobno nie działa tak zwyczajnie w implementacji Java (tak gdzieś wyczytałem). Trzeba by ściągać najnowszy Xerces i takie tam kombinacje. Kwestia, czy warto się w to bawić tylko po to, żeby wywalić jedną linię. Ostatecznie można przetawrzać plik tekstowy i wywalić z niego puste linie. Można też użyć innej biblioteki do obsługi XML. JDOM radził sobie z formatowaniem wyjścia bardzo dobrze i w prosty sposób.

0

Wielkie dzięki za pomoc, naprawde dużo pomogłeś. Dzięki wielkie.

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