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 🙂