2010-11-24 21 views
1

Ich benutze Builder :: XmlMarkup, um XML zu erstellen. Ich möchte ein Tag ohne Inhalt erstellen, da die API mich dazu zwingt, dies zu erstellen. Wenn ich einen Blog verwendenhowto get Builder zum Erstellen <tag></tag> anstelle von <tag/>

xml.tag do 
end 

ich bekommen, was ich

<tag></tag> 

brauchen, aber ich möchte es kürzer

xml.mytag 

das gibt mir

<mytag/> 

aber ich will

<mytag></mytag> 

was muss ich als Option übergeben.

Grüßen Kai

+1

Warum wollen Sie '' statt '' ? Da die Ausgabe XML ist, sollten Downstream-Anwendungen den Unterschied nicht kennen oder beachten. – LarsH

Antwort

2

Übergeben Sie einfach leere Zeichenfolge als Parameter. xml.mytag('')

+1

Scheinbar funktioniert das nicht (mehr?) Habe es einfach versucht und Builder versucht offensichtlich, schlau zu sein und stattdessen ' 'zu erstellen – wich

2

Warum wollen Sie <mytag></mytag> statt <mytag/>? Da die Ausgabe XML ist, sollten Downstream-Anwendungen den Unterschied nicht kennen oder beachten.

Nach dem Infoset spec (Appendix D point 7), „Der Unterschied zwischen den beiden Formen eines leeren Elements: <foo/> und <foo></foo>“ sind nicht im XML Information Set vertreten.

Dies beantwortet nicht Ihre "wie" Frage, aber wenn Sie feststellen, dass Sie eigentlich nicht tun müssen, was Sie versuchen, kann es Sie vor einer schwierigen und unnötigen wilden Gans-Jagd retten.

+2

Das Problem ist, Datev (der größte deutsche Buchhaltungssystem-Lieferant) zwingt mich dazu. Ich glaube nicht, dass sie ihre API für mich ändern;) – toy

+1

@toy: verstanden. Obwohl es das Verhalten der App für * Sie * nicht ändern würde ... wäre es, weil sie einen Fehler haben, so dass sie behaupten, XML zu konsumieren, aber in Wirklichkeit benötigen sie XML, das auf ihre Art formatiert ist. Jemand sollte es ihnen sagen. Es würde auch nicht ihre API per se ändern, es sei denn, ihre Spezifikation sagt ausdrücklich, dass "die Kurzform eines leeren Elements nicht erlaubt ist (oder etwas anderes bedeutet)". Aber ich verstehe, die Realität ist, dass sie es morgen nicht reparieren werden! – LarsH

1

ok leere string ist nett, eine andere einzeilige weg ist leer block ich fand.

xml.mytag{}