M
Marco01_809
Gast
Hi Forum. 
Ich bin dabei einen eigenen kleinen "<tag>value</tag>"-Xml-Parser zu schreiben.
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:
Im Moment wird aus dem obigen Xml aber:
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
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