Xml lesen und in .txt zeilenweise schreiben

Status
Nicht offen für weitere Antworten.

theone101

Mitglied
Hallo bin neu hier.
Vorab ich bin nicht so fit in Java aber wills werden :)

Meine Problemstellung ist:

Ich habe mehrere XML files in vielen verschiedenen Unterverzeichnissen. Die XML files mit dem kommpletten Pfad sind in einer .txt datie Zeilenweise abgespeichert. Sprich:

C:\Ordner\Ordner\Datei1.xml
C:\Ordner\Ordner\Unterordner\Datei2.xml
usw.

Nun soll aus jeder XML bestimmte Informationen ausgelesen werden, nur Bestimmte. z.B.:
<Datum>
<Sprache>

Da in einigen files nicht alle infos stecken soll null ausgegeben werden wenn nix gefunden wird.
Ich möchte jetzt das immer eine XML aufgemacht wird nach den kriterien duchsucht wird und dann in ein textfile geschrieben wird und dann das nächste xml bearbeitet wird bis die liste der Pfade mit den XML dateien abgearbeitet wurde.
In die .txt soll so reingeschrieben werden, das jeder Tag durch ein "," getrennt ist und jede xml file nur in einer Zeile steht.
Sprich:

1.12.2003 , deutsch
12.4.2005 , englisch
15.6.2008 , null

Ich habe was versucht um den XML code zu lesen das klapt eigentlich auch schon gut nur kann ich das nur aus einer Datei. Ich möchte aber nicht alle Pfade eingeben sondern die aus der .txt file auslesen lassen.

Hoffe jemand kann mir einen rat geben, vielleicht geht des ja auch besser wie gesagt war bis jetzt nur so ein versuch.

Danke schon mal im vorraus.

Gruß Thomas

Code:
import java.io.*; 
 
public class XMLlesen {
 


	                public static String alles(String tag)
	                throws java.io.IOException
	                {
	                	
	                    String ausgabe = null;
	                    String Text = null;
	                    String Next = null;
	                    int laenge1 = 0;
	                    int laenge2 = 0;
	                    
	
	                    BufferedReader b = new BufferedReader
	                    (new FileReader ("C:\\muc.xml"));
	                  
	                    //XML einlesen und alle Space und tabs wegmachen 
	                    while ((Text = b.readLine()) != null){
	                    	Next = Text.trim();
	                        laenge1 = Next.length()-1;
	                        laenge2 = tag.length();
	                        int ende = laenge1-laenge2; //abziehen von gesamter Textlänge und den Tag
	                        
	        
	                            if(Text.contains(tag)){
	                                ausgabe = Next.substring(laenge2,ende); //ausgabe der einzelnen Tab texte
	                            }
               }
	                
	            
	            b.close();
	            return ausgabe;    
	                }
	                
	private static final String LINE_SEPARATOR = System.getProperty("line.separator");

	        	        
	              
	public static void main(String args[])
	throws java.io.IOException{

				
	            System.out.println();
	            System.out.print(alles("<Pid>")+", ");
	            System.out.print(alles("<Iso639LanguageCode>")+", ");
	            System.out.print(alles("<name>")+", "); //Line_seperator macht Zeilenumbruch
	           
	            System.out.print(alles("<TableId>")+", ");
	            System.out.print(alles("<Iso639LanguageCode>")+ LINE_SEPARATOR);
	            System.out.println();
	    
	    
	            PrintWriter p = new PrintWriter(new FileWriter ("C:\\ausgabe.txt"));
	            
	            p.print(alles("<Pid>")+", ");
	            p.print(alles("<Iso639LanguageCode>")+", "); 
	            p.print(alles("<name>")+ LINE_SEPARATOR);
	            p.print(alles("<UtcTime>"));
	            
	            p.println();
	            p.flush();
	            p.close();
	            
	    }
	}
 

Marco13

Top Contributor
Wenn du jetzt die "richtigen" XML-Parser verwendet hättest, würde ich die Frage verstehen (und das solltest du. nur nebenbei, mal in Erwägung ziehen....), aber wie man eine Datei liest, hast du ja schon - sinngemäß(!) wäre das ja sowas wie
Code:
BufferedReader b2 = new BufferedReader(new FileReader ("dieTextDatei.txt"));
String xmlDateiName;
while xmlDateiName= b2.readLine()) != null)
{
    BufferedReader b = new BufferedReader(new FileReader (xmlDateiName));
                    
    //XML einlesen und alle Space und tabs wegmachen
    (wie vorher...)
Das sollte man natürlich etwas aufräumen ... so, wie die "alles"-Methode im Moment implementiert ist, ist das ziemlich unschön.....

http://www.google.de/search?hl=de&q=how+to+parse+an+xml+file+with+java&btnG=Google-Suche&meta=
 

theone101

Mitglied
Ich wärds wahrscheinlich jezt ganz anders machen und alles über bord schmeißen und richtig den XMLParser einsetzen.

Aber leider funkts so immer noch nicht der ließt mir immer nur den letzten Pfad aus der .txt und nicht alle nacheinander.

Sprich:

C:\Ordner\ORdner\datei1.xml
C:\Ordner\ORdner\Ordner\datei2.xml

Da würde er nur die Letzte datei durchsuchen und ausgeben und leider nicht die erste und dann die zweite. Ich weis auch net warum des net Funzt.

Mich würds halt noch interessieren ob des so Funktioniert also wenn mir noch jemand etwas unter die arme greifen kann währe das sehr net.

Gruß
P.S. Ich weiß der Stil ist miserabel aber ich musste des so schnell wie möglich zusammenschustern also bitte ich um Entschuldigung :)
 

Marco13

Top Contributor
Ja, wenn du das Codestück einfach an den Anfang deiner "alles"-Methode geschrieben hast, dann macht er natürlich "alles" mit allen Dateien, und nur das Ergebnis der letzten wirde zurückgegeben.

Ggf. müßtest du halt sowas machen wie
Code:
string alles(..., String xmlDateName)
{
    ...
    BufferedReader b = new BufferedReader(new FileReader (xmlDateiName)); 
    ...
    // Sonst ist 'alles' so wie vorher
}
und dann den Aufruf entsprechend machen
Code:
BufferedReader b2 = new BufferedReader(new FileReader ("dieTextDatei.txt"));
String xmlDateiName;
while xmlDateiName= b2.readLine()) != null)
{
    // Hier alles machen, was vorher in der main stand, aber die Aufrufe von 'alles' bekommen dann noch den aktuellen Dateinamen übergeben
    ....   alles(..., xmlDateiName);
(Ist aber genauso gehackt wie der Rest....)
 

theone101

Mitglied
Hallo sorry das ich so lang gebraucht hab.

Funkt aber immer noch net weis auch net warum er gibt mir zwar 3zeilen aus wenn 3 Pfade drinnen sind aber es steht immer daselbe drinnen obwohl es andere dateien sind.
Obwohl in der Textdatei mehrere Pfade drinnen stehen.

Vielleicht weis jemand wie man des Lösen kann.
Mein Code Jetzt

Code:
import java.io.*;

public class XMLlesen {

	public static String alles(String tag, String xmlDateiName) throws java.io.IOException {
		
		String ausgabe = null;
		String Text = null;
		String Next = null;
		int laenge1 = 0;
		int laenge2 = 0;
		
		
		BufferedReader b2 = new BufferedReader(new FileReader ("C:\\Streams.txt"));
		while ((xmlDateiName= b2.readLine()) != null)
		{
		    BufferedReader b = new BufferedReader(new FileReader (xmlDateiName));
		
		
		//XML einlesen und alle Space und tabs wegmachen 
		while ((Text = b.readLine()) != null) {
			Next = Text.trim();
			laenge1 = Next.length() - 1;
			laenge2 = tag.length();
			int ende = laenge1 - laenge2; //abziehen von gesamter Textlänge und den Tag

			if (Text.contains(tag)) {
				ausgabe = Next.substring(laenge2, ende); //ausgabe der einzelnen Tab texte
			}
		}
		
	}
		
		return ausgabe;
	}

	private static final String LINE_SEPARATOR = System
			.getProperty("line.separator");

	public static void main(String args[]) throws java.io.IOException {
		
		BufferedReader b2 = new BufferedReader(new FileReader ("C:\\streams.txt"));
		String xmlDateiName;
		while ((xmlDateiName = b2.readLine()) != null)
		{

		System.out.println();
		System.out.print(alles("<Pid>",xmlDateiName) + ", ");
		System.out.print(alles("<Iso639LanguageCode>",xmlDateiName) + ", ");
		System.out.print(alles("<UtcTime>",xmlDateiName) + ", "); //Line_seperator macht Zeilenumbruch
		System.out.print(alles(">252<",xmlDateiName) + ", ");
		System.out.print(alles("<UtcTime>",xmlDateiName + LINE_SEPARATOR));
		System.out.println();
		

                PrintWriter p = new PrintWriter(new FileWriter("C:\\ausgabe.txt"));

		p.print(alles("<Pid>") + ", ");
		p.print(alles("<Iso639LanguageCode>") + ", ");
		p.print(alles("<name>") + LINE_SEPARATOR);
		p.print(alles("<UtcTime>"));

		p.println();
		p.flush();
		p.close();
		
		}
	}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Klassen mit generischen Attributen mit Jackson lesen XML & JSON 4
H XMLConfiguration(1.10)/getString : Wert "E" aus <version type="Auto">E</version>n lesen XML & JSON 15
C einfach XML lesen XML & JSON 4
JBoby Yaml File lesen und in Objekte umwandel (SnakeYAML / YamlBeans) XML & JSON 0
E Einzelne Tags der context.xml lesen XML & JSON 1
W Json von URL Lesen (mit Gson Library) XML & JSON 3
W Json von URL Lesen XML & JSON 2
G Jsoup Daten lesen XML & JSON 0
F KindElemente lesen und begrenzen XML & JSON 0
P Bestimmte XML-Inhalte in String lesen XML & JSON 2
B XML aus einer URL im Internet lesen (JDOM) XML & JSON 4
P Komfortabel XML Dokumente schreiben und lesen XML & JSON 6
Maxim6394 Lesen/Schreiben von XML Datei XML & JSON 9
D Aus lesen einer XML-Datei ( 1 root, 3 childs) XML & JSON 7
R XLM Datei lesen Ändern (kompliziertes Search and Replace) und Speichern XML & JSON 12
S XML lesen und schreiben XML & JSON 2
Q Atom/RSS-Feed lesen - per XSD zu Java-Code XML & JSON 4
K JAXB: Klassen mit Annotation Lesen/Schreiben XML XML & JSON 3
O PDF mit Pdfbox lesen XML & JSON 3
S XMLStreamReader, letzten eintrag eines xml lesen? XML & JSON 5
N MalformedByteSequenceException bei Lesen aus XML Datei XML & JSON 2
Mike90 Daten aus DB in ExcelTabelle lesen + bearbeiten + formatieren XML & JSON 2
Mike90 -xlsx Dateien in Java lesen XML & JSON 3
Fadi .classpath(XML) mit Java lesen XML & JSON 2
J Problem beim XML-Lesen XML & JSON 2
J Logdaten als XML speichern und lesen XML & JSON 2
J XML lesen schreiben XML & JSON 7
N jdom problem beim lesen von child elementen XML & JSON 5
N problem bei xml lesen mit jdom XML & JSON 2
L Einfaches XML Lesen und Schreiben XML & JSON 4
C SAX Probleme beim lesen XML & JSON 4
O OpenDocument-Tabelle mit Java lesen und schreiben XML & JSON 3
R key aus xml lesen mittels jdom XML & JSON 5
F XML ( ca. 280 MB) JDom & SAXBuilder lesen = OutOfMemoryE XML & JSON 4
O XML lesen, wenn DTD in anderem Verzeichnis XML & JSON 2
R Daten aus xml lesen und in Strings speichern XML & JSON 4
R xml mit Jdom lesen und als Jtree anzeigen. XML & JSON 9
J Jdom Elemente lesen XML & JSON 5
thE_29 Vor dem ersten Posten bitte lesen! XML & JSON 0
J Excel zeilenweise auslesen - POI XML & JSON 5
C xml "zeilenweise" einlesen XML & JSON 6
D Int-Werte in XML-Datei schreiben (DOM) XML & JSON 2
W XPath schreiben XML & JSON 1
N Java XML schreiben funktioniert nicht XML & JSON 1
L Mit Hilfe von POI eine Tabelle ohne Rahmen in Word schreiben XML & JSON 2
J XML als stream schreiben? XML & JSON 2
M JAXB: automatisches Groß schreiben Property XML & JSON 9
L Datenstruktur in XML-File schreiben XML & JSON 2
G DXF-File schreiben XML & JSON 17
B Validierung nur beim einlesen oder auch beim schreiben? XML & JSON 4
C DOM: Attribute nicht in alphabetischer Reihenfolge schreiben XML & JSON 3
T Schreiben einer XML XML & JSON 8
J wert IN einem tag einlesen/schreiben XML & JSON 4
K '&' in xml schreiben XML & JSON 2
G Problem beim schreiben von XML in eine File XML & JSON 2
sylo DOM Document in XML Datei schreiben XML & JSON 5
J xmlencoder Zustände einer Bean schreiben XML & JSON 3
B eigentlich einfach nur XML schreiben XML & JSON 3
L Objekt Serialisierung: Schreiben aller Attribute erzwingen XML & JSON 5
A JDOM: Wert schreiben bzw. ändern XML & JSON 6
M DOM, Werte mit setAttribute in XML schreiben XML & JSON 3
B XML einlesen und in Datenbank schreiben XML & JSON 1
D Tabs/Einrückungen der XML-Elemente gehen beim Schreiben verloren XML & JSON 5
J XML - schreiben und einlesen (Schema) XML & JSON 14
G Wie Attribute aus XML in ein Model schreiben (StAX)? XML & JSON 7
K XML-schreiben aus ResultSet dauert zu lange XML & JSON 10
G Mit JAXP in eine Datei schreiben XML & JSON 2
R XML-Datei schreiben - InstantiationException XML & JSON 2
Z DOM: Attribute in Knoten schreiben XML & JSON 2
S XMl Dateien in Java schreiben XML & JSON 4

Ähnliche Java Themen

Neue Themen


Oben