ich schreibe gerade an einer Software die auf Jabber basiert. Die Aufgabe ist beliebige Attribute mit Werten aus einem ankommenden String zu parsen.
Denn es soll die Möglichkeit geben via üblichen Jabber Client die Software zu steuern. Somit habe ich das Problem das der Benutzer beliebiges eingeben kann. Die Software aber nur Attribute mit einem Wert in bestimmter struktur anehmen soll.
Code: Alles auswählen
name="markus" beschreibung="super kerl"
Code: Alles auswählen
{name:'markus' , beschreibung:'super kerl'}
Ein ConfigFile Parser wäre genau das Richtige wenn er nicht mehrere verschriedene Syntaxen annehmen würde.
Ich habe versucht einen eigenen Parser zu schreiben, der mit split beispielsweise erst nach den leerzeichen splittet und sich danach die Gleichheitszeichen vornimmt.
Jedoch kann es vorkommen das ein Wert von einem Attribut (Schlüssel) ebenfalls Leerzeichen enthält. Was dann nur möglich ist wenn man anhand den Anführungszeichen herausfinet ob man an einem bestimmten Leerzeichen splitten darf.
Lange Rede, kurzer Sinn.
Ich bin auf der Suche nach einer Möglichkeit mit der ich solch ein String mit beliebig vielen Attributen zerlegen und bequem in ein Dictionary speichern kann. Und auch wirklich nur die Attribute annimmt und speichert die in der gleichen struktur (beispielsweise name="markus") vorhanden sind.
Der Wert selber (im oberen beispiel -> 'super kerl') ist immer in Escape-Zeichen Dekodierung dargestellt. Die Anführungstriche könnte man als Zeichen für den Anfang und Ende eines Wert definieren. Jedoch stellt sich noch die Frage wie man darauf hin folgende Attribute mit Werten splittet bzw. parst. So das kein Wert mit enthaltenen Leerzeichen auseinander gedröselt wird.
In der Struktur von Schlüssel und Wert bin ich offen, so das auch zwischen einem Wert und einem Attribut(schlüssel) das Leerzeichen einfach weggelassen werden kann:
Code: Alles auswählen
name="markus"beschreibung="super kerl"
Wäre über eure Hilfe sehr Dankbar,
Gruß
pex