2009-08-12 9 views
2

Lets sagen, ich habe ein DOM-Objekt (oder eine Zeichenfolge, die Xml enthält). Ist es in irgendeiner Weise möglich, das XML so zu serialisieren, dass jedes Attribut in einer neuen Zeile erscheint? Putting jedes Attribut in einer neuen Zeile während XML-Serialisierung

der Ausgang Dies Ich möchte:

<parent> 
    <anElement 
     attrOne="1" 
     attrTwo="2" 
     attrThree="3" 
    /> 
</parent> 

, wenn die Lösung ein Teil der Standard-Java-API Bevorzugte, aber ich vermute, ein solches Feature in dort nicht verfügbar ist, oder bin ich falsch?

Ich habe eine Eigenschaft für einen Serializer in .NET gefunden, NewLineOnAttributes genannt. Wonach ich suche, ist etwas Äquivalentes, aber in Java.

+0

Da XML unabhängig von Leerzeichen ist, sollten Sie nicht ein Stylesheet verwenden, um eine solche spezielle Formatierung durchzuführen? –

+0

@Nick Holt Tatsächlich verwende ich xslt, um xml dom Objekte programmgesteuert zu ändern. In einem späteren Schritt serialisiere ich die transformierten Objekte. Was ich nach der Serialisierung habe, ist: a) leere Zeilen, wo früher Elemente waren (der ursprüngliche Dokument-Whitespace wird beibehalten) b) Die Zeilenumbrüche zwischen den Attributen des Originaldokuments sind verschwunden. – Alderath

Antwort

0

Die Bibliothek XOM verfügt über eine Serializer Klasse, die Sie überschreiben können, um sie in dem von Ihnen gewünschten Format auszugeben.

0

Ich kenne keine XML API für Java, die diese spezifische Fähigkeit bietet. Ich habe den Quellcode für JDOM und XOM überprüft, und alle drucken Attribute in derselben Zeile und bieten keine spezifischen Hooks zum Überschreiben.

Sowohl XOM und JDOM tun spezifische Klassen für XML-Serialisierung (XMLOutputter und Serializer, respectively), und beide Klassen geschützt haben oder öffentliche Methoden für die Serialisierung von Attributen Handhabung, so könnte man, wenn man will, jene Klassen, Unterklasse und überschreiben Sie die geeigneten Methoden, um Ihre Attributformatierung wie gewünscht zu steuern.

Wie für die Standard-Java-API, vergessen Sie es, das Zeug ist ziemlich böse.

1

Der Parser DecentXML kann dies tun.

+0

Die Lizenz für diese Bibliothek besagt: "Weder der Name der noch die Namen ihrer Mitwirkenden dürfen zur Unterstützung oder Förderung von Produkten verwendet werden, die von dieser Software abgeleitet sind, ohne vorherige ausdrückliche schriftliche Genehmigung." Bedeutet das: Wenn Firma A DecentXML in Programm B verwendet, darf Firma A Programm B nicht als Produkt von Firma A vermarkten? Wenn ja, ist dies definitiv keine Option. (Ich hasse Texte in Bezug auf rechtliche Probleme. Sie sind wichtige Codeverschleierung der englischen Sprache) – Alderath

+0

Wie ich es verstehe, bedeutet es, dass Sie Ihr Produkt nicht mit meinem Namen ohne meine Zustimmung werben können. –

+0

Mein schlechtes. Ich habe das Dokument zu schnell überflogen und falsch angenommen, dass sich auf das Unternehmen bezieht, das den Parser verwendet. Es bezieht sich eigentlich auf die Organisation, die die DecentXML-Bibliothek bereitstellt. – Alderath