Eigener XML-Parser

M

Marco01_809

Gast
Hi Forum. :)

Ich bin dabei einen eigenen kleinen "<tag>value</tag>"-Xml-Parser zu schreiben.

Java:
public class Xml {
	protected final String xmlCode;
	protected String parsedCode;

	public static void main(String[] args) {
		Xml xml = new Xml("<xml>\n    <test>XmlData</test>\n    <tag2><epic>imba</epic><tag3></tag3></tag2></xml>");
		xml.parseXmlCode();
		System.out.println(xml.getParsedCode());
	}

	public Xml(String xmlCode) {
		this.xmlCode = xmlCode;
	}

	public String getXmlCode() {
		return this.xmlCode;
	}

	public String getParsedCode() {
		return this.parsedCode;
	}

	public void parseXmlCode() {
		if (this.parsedCode == null)
			this.parsedCode = this.internalParse((this.xmlCode).toCharArray());
	}

	protected String internalParse(char[] xmlCode) {
		StringBuilder data = new StringBuilder();
		byte xmlEbene = 0;
		boolean isTag = false, isCloseTag = false;
		for (char c : xmlCode) {
			switch (c) {
			case '<':
				isTag = true;
				break;
			case '>':
				xmlEbene++;
				if (!isCloseTag)
					data.append(": ");
				data.append("\n");
				for (int i = 0; i < xmlEbene; i++)
					data.append("    ");
				isTag = false;
				isCloseTag = false;
				break;
			case '/':
				if (isTag) {
					xmlEbene -= 2;
					isCloseTag = true;
					break;
				}
			default:
				if (!isCloseTag)
					data.append(c);
			}
		}
		return data.toString();
	}
}

Das hier ist meine Xml-Klasse.

Sie soll aus:
[XML]<xml>
<test>XmlData</test>
<tag2><epic>imba</epic><tag3></tag3></tag2>
</xml>[/XML]
folgendes machen:
Code:
xml:
    test: "XmlData"
    tag2:
        epic: "imba"
        tag3: ""

Im Moment wird aus dem obigen Xml aber:
Code:
xml: 
    
    test: 
        XmlData
    
    tag2: 
        epic: 
            imba
        tag3:

Ich möchte meine Funktion internalParse() Nicht zu sehr überladen. Jedoch habe ich keine Ahnung wie ich das hübsch lösen soll. Hab schon jedemenge rumprobiert.

Bitte um Hilfe, danke :)
 

Antoras

Top Contributor
Das leidige Thema Parserbau. Daran kannst dir die Zähne ausbeißen wenn es nicht richtig gemacht wird. Jede Abkürzung, die du nimmst wird später in Mehraufwand resultieren. Konkret heißt das: Teile deinen Code in Lexer und Parser auf, baue einen Syntaxbaum und evaluiere dann jenen Baum. Hört sich kompliziert an? Ist es auch, zumindest am Anfang.

Wofür schreibst du den Parser? Nur zum üben? Dann würde ich dir empfehlen nicht gleich bei XML, sondern mit einer etwas einfacheren Sprache anzufangen wie z.B. Brainfuck. Ein kleiner Matheparser ist für den Anfang auch nicht schlecht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
pkm Gibt es XML-Parser-Bibliotheken XML & JSON 3
B XML-Daten mit SAX Parser verarbeiten in Java XML & JSON 4
MiMa SAX-Parser beenden? XML & JSON 5
K GSON-Parser XML & JSON 6
K XML-Parser vs. XLST XML & JSON 4
L DOM Parser Implementieren XML & JSON 9
M SAX Parser implementieren XML & JSON 2
E Gibt es denn einen XML-Parser für JUnit-Tests? XML & JSON 6
D XSD Parser XML & JSON 1
T Neuer XML Parser!!! XML & JSON 33
J XML Parser anhand xsd erzeugen XML & JSON 2
H SAX Parser optimieren XML & JSON 5
H Sax Parser verschluckt teile XML & JSON 11
C XML SAX Parser XML & JSON 10
R Handler-Wechsel, SAX Parser bricht nach 8192 Byte ab XML & JSON 5
B SAX-Parser - Dokumente einlesen und in einer Map ablegen XML & JSON 2
S Sax Parser Performance XML & JSON 2
S Typsicherer HTML-Parser XML & JSON 5
S HTML Parser XML & JSON 2
B Parser und Fabrik XML & JSON 6
F SAX Parser siehe nichts auf dem Konsole weder eine Fehlermeldung noch eine Ergebnis XML & JSON 6
enne87 SAX-Parser XML & JSON 5
C Mit SAX Parser XML Attribute auswerten XML & JSON 3
H XML-Parser: geparste Strings in Konstruktor? XML & JSON 9
S DOM Parser XML & JSON 12
S Sax Parser XML & JSON 3
D Speicherüberlauf bei character-Methode mit SAX-Parser XML & JSON 3
Y Welchen XML Parser / Klassen aus XSD generieren lassen XML & JSON 4
H Brauche ich einen speziellen XML-Parser? XML & JSON 2
M Unhierarchisches XML-File mit DOM-Parser auswerten XML & JSON 5
G XML Parser Fehler, zwei gleiche kind-Elemente XML & JSON 7
S Welcher XML-Parser am besten? XML & JSON 4
S Parser XML & JSON 2
S JAVA XML Parser der einen String parst XML & JSON 3
Noar XML-Parser mit GUI? XML & JSON 2
R Problem mit SAX-Parser characters() XML & JSON 7
K SAX Parser Character Puffer zu klein XML & JSON 2
B Mit Sax-Parser validieren XML & JSON 7
Wildcard xpath Parser XML & JSON 8

Ähnliche Java Themen

Neue Themen


Oben