TweakPC

Zurück   Computer Hardware Forum - TweakPC > Games und Software > Programmiersprachen
Registrieren Hilfe Community Downloads

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05.02.2008, 10:13   #1 (permalink)
Overclocker
 
Benutzerbild von MasterMito
 

Registriert seit: 28.03.2006
Beiträge: 234

MasterMito befindet sich auf einem aufstrebenden Ast

Standard [Java] XMLEventWriter soll Zeilenumbrüche machen

Moinsen,

ich habe folgendes Problem.
Ich habe mir einen netten XMLEventwriter gebastelt, bzw. habe den aus der Standard-Api genommen.
Das ganze funktioniert auch super, nur ist die XML eine einzige aneinanderreihung von Zeichen, sprich komplett unformatiert und unlesbar.
Gibt es da einen Befehl? Ein Blick in die Java-Doc hat mich nicht wirklich weitergebracht, vielleicht hat ja einer von euch nen Tipp. Google weiss auch nix dazu.
MasterMito ist offline   Mit Zitat antworten
Alt 05.02.2008, 16:39   #2 (permalink)
Polsterwaffenkampfsportle r
 
Benutzerbild von tele
 

Registriert seit: 29.10.2003
Beiträge: 14.561

tele hat eine strahlende Zukunft
tele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunft

Standard AW: [Java]XMLEventWriter soll Zeilenumbrüche machen

Ähem Puh ... normalerweise bringen die ganzen XML Implementierungen einen Formatierer mit, sodass man XML auch als netten Baum ausgeben kann. Aber das ist halt Implementierungsspezifisch.

hier wird ein Format Objekt dafür verwendet: Tutorial, Introduction to XML and XML with Xerces for Java (updated for jdk 1.5 and xerces 2.7.1)


Gruß

tele
tele ist offline   Mit Zitat antworten
Für diesen Beitrag bedankt sich:
MasterMito (06.02.2008)
Alt 06.02.2008, 00:51   #3 (permalink)
Overclocker
 
Benutzerbild von MasterMito
 

Registriert seit: 28.03.2006
Beiträge: 234

MasterMito befindet sich auf einem aufstrebenden Ast

Standard AW: [Java]XMLEventWriter soll Zeilenumbrüche machen

Nabend,
irgendwie hatte ich das im Urin das nur du was schreibst
Da wird auch von eventbased, xerces, DOM-based gesprochen, nur wie ich im kurzüberflug eine Erweiterung (die ich leider nicht benutzen darf, nur EventWriter und EventReader ist erlaubt).Und irgendwie erkenne ich in den Beispielen meinen Code nicht wieder(was am Kaffee oder Zuwenig Kaffee liegen kann), da ich erstmal meine XMLEvents erzeuge und danach in beliebiger reihenfolge in XML hau, ne nette schleife drum rum, da ich mehree Objekte gleicher Art speichern möchte. Das Beispiel schlägt auch DOM's vor.
Nur sind die Daten intern nicht als Dom sondern als treeset gespeichert, ich hole mir quasi die Objekte nacheinander aus dem treeset und speichere sie in der XML, der Reader funzt, ohne probs, writer auch, nur ohne formatierung. Der holt dann die Daten aus der XML und fügt sie wieder in den Baum ein. Hilft es Sourcecode zu posten?
Nur so ne Idee, bei eventFactory.createEndDocument("","",bla) lasse ich immer die ersten beiden attribute weg, also prefix und nameSpaceUri. wird nicht gebraucht, wobei ich dazu keine vernünftige erklärung gibt.
MasterMito ist offline   Mit Zitat antworten
Alt 06.02.2008, 10:53   #4 (permalink)
Polsterwaffenkampfsportle r
 
Benutzerbild von tele
 

Registriert seit: 29.10.2003
Beiträge: 14.561

tele hat eine strahlende Zukunft
tele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunft

Standard AW: [Java]XMLEventWriter soll Zeilenumbrüche machen

Moin,

1.) ja sourcecode könnte helfen
2.) nein bei der Kreiierung des "document" sollte man noch keinen Formatter mitgeben, erst bei der ausgabe.
3.) überschau nochmal dein Konzept, was das mit DOM ansich gemeinsam hat, schau dir die verwendete Implementierung und die zur verfügung gestellten Methoden an und schau mal ob du für die Implementierung Bsps findest - mit der Suche nach "indent" sollte man da recht schnell was finden.

gruß

tele
tele ist offline   Mit Zitat antworten
Für diesen Beitrag bedankt sich:
MasterMito (06.02.2008)
Alt 06.02.2008, 19:41   #5 (permalink)
Overclocker
 
Benutzerbild von MasterMito
 

Registriert seit: 28.03.2006
Beiträge: 234

MasterMito befindet sich auf einem aufstrebenden Ast

Standard AW: [Java]XMLEventWriter soll Zeilenumbrüche machen

so, hab auf die schnelle erstmal nur sourcecode zur hand da ich auf nem Sprung bin, vielleicht hilft das:

Code:
package xml;

import java.io.FileOutputStream;
import java.io.IOException;

import javax.xml.stream.XMLEventFactory;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.XMLEvent;
import java.util.*;

import structures.Member;

public class IOXml {
	
	/* non-static declarations*/
	static private IOXml theInstance = null;

	public structures.Club getClub(){
	return null;
		 }

	/**
	 * Put a club into an XML File with clubname, clubaddress, and director.
	 * 
	 * @param club	The club to put
	 * @throws <code>IOException</code>	Will thrown if something went wrong, 
	 * like wrong letters
	 * @throws <code>XMLStreamException</code>	Will thrown if something went
	 *  wrong while streaming
	 */
	public void putClub(structures.Club club) throws XMLStreamException, 
			IOException {
		XMLOutputFactory factory = XMLOutputFactory.newInstance();
		XMLEventWriter writer = 
				factory.createXMLEventWriter(new FileOutputStream("Club.xml"));
		XMLEventFactory eventFactory = XMLEventFactory.newInstance();
		
		XMLEvent header = eventFactory.createStartDocument();
		XMLEvent startRoot = eventFactory.createStartElement("", "","club");
		XMLEvent endRoot = eventFactory.createEndDocument();
		XMLEvent startClubName = 
				eventFactory.createStartElement("", "", "clubname");
		XMLEvent endClubName = 
				eventFactory.createEndElement("", "", "clubName");
		XMLEvent startAddress = 
				eventFactory.createStartElement("", "", "address");
		XMLEvent endAddress = eventFactory.createEndElement("", "", "address");
		XMLEvent startStreet = 
				eventFactory.createStartElement("", "", "street");
		XMLEvent endStreet = eventFactory.createEndElement("", "", "street");
		XMLEvent startHouseNumber = 
				eventFactory.createStartElement("", "", "houseNumber");
		XMLEvent endHouseNumber = 
				eventFactory.createEndElement("", "", "houseNumber");
		XMLEvent startPostalCode = 
				eventFactory.createStartElement("", "", "postalCode");
		XMLEvent endPostalCode = 
				eventFactory.createEndElement("", "", "postalCode");
		XMLEvent startTown = eventFactory.createStartElement("", "", "town");
		XMLEvent endTown = eventFactory.createEndElement("", "", "town");
		XMLEvent startEmailAddress = 
				eventFactory.createStartElement("", "", "emailAddress");
		XMLEvent endEmailAddress = 
				eventFactory.createEndElement("", "", "emailAddress");
		XMLEvent startDirectorsName = 
				eventFactory.createStartElement("", "", "directorsName");
		XMLEvent endDirectorsName = 
				eventFactory.createEndElement("", "", "directorsName");
		XMLEvent name = 
				eventFactory.createCharacters(club.getName());
		XMLEvent street = eventFactory.createCharacters(
				club.getAddress().getStreet());
		XMLEvent houseNumber = eventFactory.createCharacters(
				club.getAddress().getHouseNumber());
		XMLEvent postalCode = eventFactory.createCharacters(
				club.getAddress().getPostalCode());
		XMLEvent town = eventFactory.createCharacters(
				club.getAddress().getTown());
		XMLEvent emailAddress = eventFactory.createCharacters(
				club.getAddress().getEmailAddress());
		XMLEvent clubDirector = eventFactory.createCharacters(
				club.getDirectorsName());
		
		writer.add(header);
		writer.add(startRoot);
		writer.add(startClubName);
			writer.add(name);
		writer.add(endClubName);
		writer.add(startAddress);
			writer.add(startStreet);
				writer.add(street);
			writer.add(endStreet);
			writer.add(startHouseNumber);
				writer.add(houseNumber);
			writer.add(endHouseNumber);
			writer.add(startPostalCode);
				writer.add(postalCode);
			writer.add(endPostalCode);
			writer.add(startTown);
				writer.add(town);
			writer.add(endTown);
			writer.add(startEmailAddress);
				writer.add(emailAddress);
			writer.add(endEmailAddress);
		writer.add(endAddress);
		writer.add(startDirectorsName);
			writer.add(clubDirector);
		writer.add(endDirectorsName);
		writer.add(endRoot);
		writer.close();
	}

	/**
	 * Put an actual memberlist into an XML file and set to every member the
	 * new progress in the progress bar and show the actual name in the 
	 * progress bar. After putting all members, the progress bar will set to
	 * 100, that the progress bar will destroyed.
	 * 
	 * @param memberList	The memberlist to put
	 * @param progressIndicator	The progress bar
	 * @throws <code>IOException</code>	Will thrown if something went wrong, 
	 * like wrong letters
	 * @throws <code>XMLStreamException</code>	Will thrown if something went
	 *  wrong while streaming
	 */
	public void putMemberList(structures.MemberList memberList, 
				gui.ProgressIndicator progressIndicator) throws IOException, 
						XMLStreamException {
		
		XMLOutputFactory factory = XMLOutputFactory.newInstance();
		XMLEventWriter writer = factory.createXMLEventWriter(
				new FileOutputStream("MemberList.xml") );
		XMLEventFactory eventFactory = XMLEventFactory.newInstance();
		int memberCount = memberList.getNumberOfMembers();;
		String memberCount2 = String.valueOf(memberList.getNumberOfMembers());
		Member actualMember; 

		XMLEvent header = eventFactory.createStartDocument();
		XMLEvent startRoot = eventFactory.createStartElement(
				"", "", "MemberList");
		XMLEvent endRoot = eventFactory.createEndDocument();
		XMLEvent memberCount1 = eventFactory.createAttribute(
				"countOfMember", memberCount2);
		XMLEvent startMember = eventFactory.createStartElement(
				"", "", "Member");
		XMLEvent endMember = eventFactory.createEndElement(
				"", "", "member");
		XMLEvent startName = eventFactory.createStartElement("", "", "name");
		XMLEvent endName = eventFactory.createEndElement("", "", "member");
		XMLEvent startGivenName = eventFactory.createStartElement(
				"", "", "givenName");
		XMLEvent endGivenName = eventFactory.createEndElement(
				"", "", "givenName");
		XMLEvent startAddress = eventFactory.createStartElement(
				"", "", "address");
		XMLEvent endAddress = eventFactory.createEndElement("", "", "address");
		XMLEvent startStreet = eventFactory.createStartElement(
				"", "", "street");
		XMLEvent endStreet = eventFactory.createEndElement("", "", "street");
		XMLEvent startHouseNumber = eventFactory.createStartElement(
				"", "", "houseNumber");
		XMLEvent endHouseNumber = eventFactory.createEndElement(
				"", "", "houseNumber");
		XMLEvent startPostalCode = eventFactory.createStartElement(
				"", "", "postalCode");
		XMLEvent endPostalCode = eventFactory.createEndElement(
				"", "", "postalCode");
		XMLEvent startTown = eventFactory.createStartElement("", "", "town");
		XMLEvent endTown = eventFactory.createEndElement("", "", "town");
		XMLEvent startEmailAddress = eventFactory.createStartElement(
				"", "", "emailAddress");
		XMLEvent endEmailAddress = eventFactory.createEndElement(
				"", "", "emailAddress");
		XMLEvent startBirthdayYear = eventFactory.createStartElement(
				"", "", "birthDayYear");
		XMLEvent endBirthdayYear = eventFactory.createEndElement(
				"", "", "birthDayYear");
		XMLEvent startBirthdayMonth = eventFactory.createStartElement(
				"", "", "birthDayMonth");
		XMLEvent endBirthdayMonth = eventFactory.createEndElement(
				"", "", "birthDayMonth");
		XMLEvent startBirthdayDay = eventFactory.createStartElement(
				"", "", "birthDayDay");
		XMLEvent endBirthdayDay = eventFactory.createEndElement(
				"", "", "birthDayDay");
		XMLEvent startEntryDateYear = eventFactory.createStartElement(
				"", "", "entryDateYear");
		XMLEvent endEntryDateYear = eventFactory.createEndElement(
				"", "", "entryDateYear");
		XMLEvent startEntryDateMonth = eventFactory.createStartElement(
				"", "", "entryDateMonth");
		XMLEvent endEntryDateMonth = eventFactory.createEndElement(
				"", "", "entryDateMonth");
		XMLEvent startEntryDateDay = eventFactory.createStartElement(
				"", "", "entryDateDay");
		XMLEvent endEntryDateDay = eventFactory.createEndElement(
				"", "", "entryDateDay");
		XMLEvent startGroup = eventFactory.createStartElement(
				"", "", "group");
		XMLEvent endGroup = eventFactory.createEndElement(
				"", "", "group");
		XMLEvent startStatus = eventFactory.createStartElement(
				"", "", "status");
		XMLEvent endStatus = eventFactory.createEndElement("", "", "status");
		
		progressIndicator.show();
		writer.add(header);
		writer.add(startRoot);
		writer.add(memberCount1);
		for (int i = 0; i < memberCount; i++) {
			actualMember = memberList.getMember(i);
			progressIndicator.setPercentage((i*100/memberCount));
			progressIndicator.setStepText(actualMember.getName());
			XMLEvent name = eventFactory.createCharacters(actualMember.getName());
			XMLEvent givenName = eventFactory.createCharacters(
					actualMember.getGivenName());
			XMLEvent street = eventFactory.createCharacters(
					actualMember.getAddress().getStreet());
			XMLEvent houseNumber = eventFactory.createCharacters(
					actualMember.getAddress().getHouseNumber());
			XMLEvent postalCode = eventFactory.createCharacters(
					actualMember.getAddress().getPostalCode());
			XMLEvent town = eventFactory.createCharacters(
					actualMember.getAddress().getTown());
			XMLEvent emailAddress = eventFactory.createCharacters(
					actualMember.getAddress().getEmailAddress());
			XMLEvent birthDayYear = eventFactory.createCharacters(
					String.valueOf(actualMember.getBirthday().get(
							Calendar.YEAR)));
			XMLEvent birthDayMonth = eventFactory.createCharacters(
					String.valueOf(actualMember.getBirthday().get(
							Calendar.MONTH)));
			XMLEvent birthDayDay = eventFactory.createCharacters(
					String.valueOf(actualMember.getBirthday().get(
							Calendar.DATE)));
			XMLEvent entryDateYear = eventFactory.createCharacters(
					String.valueOf(actualMember.getEntryDay().get(
							Calendar.YEAR)));
			XMLEvent entryDateMonth = eventFactory.createCharacters(
					String.valueOf(actualMember.getEntryDay().get(
							Calendar.MONTH)));
			XMLEvent entryDateDay = eventFactory.createCharacters(
					String.valueOf(actualMember.getEntryDay().get(
							Calendar.DATE)));
			XMLEvent group = eventFactory.createCharacters(
					actualMember.getGroup().toString());
			XMLEvent status = eventFactory.createCharacters(
					actualMember.getStatus().toString());
			
			writer.add(startMember);
			writer.add(startName);
				writer.add(name);
			writer.add(endName);
			writer.add(startGivenName);
				writer.add(givenName);
			writer.add(endGivenName);
			writer.add(startAddress);
				writer.add(startStreet);
					writer.add(street);
				writer.add(endStreet);
				writer.add(startHouseNumber);
					writer.add(houseNumber);
				writer.add(endHouseNumber);
				writer.add(startPostalCode);
					writer.add(postalCode);
				writer.add(endPostalCode);
				writer.add(startTown);
					writer.add(town);
				writer.add(endTown);
				writer.add(startEmailAddress);
					writer.add(emailAddress);
				writer.add(endEmailAddress);
			writer.add(endAddress);
			writer.add(startBirthdayYear);
				writer.add(birthDayYear);
			writer.add(endBirthdayYear);
			writer.add(startBirthdayMonth);
				writer.add(birthDayMonth);
			writer.add(endBirthdayMonth);
			writer.add(startBirthdayDay);
				writer.add(birthDayDay);
			writer.add(endBirthdayDay);
			writer.add(startEntryDateYear);
				writer.add(entryDateYear);
			writer.add(endEntryDateYear);
			writer.add(startEntryDateMonth);
				writer.add(entryDateMonth);
			writer.add(endEntryDateMonth);
			writer.add(startEntryDateDay);
				writer.add(entryDateDay);
			writer.add(endEntryDateDay);
			writer.add(startGroup);
				writer.add(group);
			writer.add(endGroup);
			writer.add(startStatus);
				writer.add(status);
			writer.add(endStatus);
			writer.add(endMember);
		}
		writer.add(endRoot);
		writer.close();
		progressIndicator.setPercentage(100);
	}

	public structures.MemberList getMemberList(gui.ProgressIndicator progressIndicator) {
	return null;
		 }

	static public xml.IOXml getInstance() {
		if (theInstance == null) {
			theInstance = new IOXml();
		}
		return theInstance;
	}
	protected IOXml() {	}	
}
hoffe das hilft. zu 2. 3. mache ich mir unterwegs gedanken... Aber schonmal dickers merci
MasterMito ist offline   Mit Zitat antworten
Alt 07.02.2008, 11:19   #6 (permalink)
Polsterwaffenkampfsportle r
 
Benutzerbild von tele
 

Registriert seit: 29.10.2003
Beiträge: 14.561

tele hat eine strahlende Zukunft
tele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunft

Standard AW: [Java]XMLEventWriter soll Zeilenumbrüche machen

Moin,


für mich sieht das so aus, als ob du jede Zeile einzeln rausschreibst (siehe FileOutputStream). Wie da die Formatierung erfolgen soll ist mir ein wenig schleierhaft.

Ich persönlich favorisiere ja DOM implementierungen. Aus 2 Gründen:
1. man hat den kompletten Baum als Objekt, falls man den für irgendwas anderes als Fileoutput verwenden möchte (mail, network, etc.)
2. man hat sehr leicht zugägliche Methoden um das Ding formatiert rauszuschreiben.


PS: XMLEvent (Java Platform SE 6)

da seh ich spontan auch keine Möglichkeit einen Formatter mitzugeben, kann aber sein, das der irgendwo versteckt wird.

Gruß

tele
tele ist offline   Mit Zitat antworten
Für diesen Beitrag bedankt sich:
MasterMito (07.02.2008)
Alt 07.02.2008, 13:26   #7 (permalink)
Overclocker
 
Benutzerbild von MasterMito
 

Registriert seit: 28.03.2006
Beiträge: 234

MasterMito befindet sich auf einem aufstrebenden Ast

Standard AW: [Java]XMLEventWriter soll Zeilenumbrüche machen

Moin,
In der JavaDoc hab ich auch gesucht, da stand nix zu drin.

Wir haben uns damals bewusst gegen DOM entschieden, da wir 3 sortierte Bäume haben in denen Daten nach der jeweiligen sortierArt soertiert sind.

Aber wenn da nichts zu machen ist, müssen wir wohl damit leben. Abgabe rückt immer näher und Code ist so gut wie fertig.

Aber trotzdem dickes merci für die Hilfe.

PS: das hält den DAU-geneigten User evtl. davon ab drin rum zu hacken wenn es kompliziert drin steht.
MasterMito ist offline   Mit Zitat antworten
Antwort

Stichworte
java, xmleventwriter, zeilenumbrüche


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[News] Java-Quelltext soll freigegeben werden TweakPC Newsbot News Archiv 0 17.12.2008 02:27
Geheimmenü soll Win XP bis zu 100% schneller machen U4Charly Windows & Programme 19 12.04.2007 11:08
was soll ich mit dem PC machen diablo Sonstige Hardware 4 03.12.2006 21:57
was soll ich mit dem PC machen diablo Sonstige Hardware 3 03.12.2006 16:58
Taktrate bei AIDA 32 was soll ich machen Gast Overclocking - Übertakten 5 30.12.2003 21:04


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr.






Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.
Impressum, Datenschutz Copyright © 1999-2015 TweakPC, Alle Rechte vorbehalten, all rights reserved