Wie formatiert man eine XML-Datei mit einer langen Liste von Attributen?

Wie formatiert man eine XML-Datei mit einer langen Liste von Attributen?

Ich arbeite derzeit mit XML-Dateien, die Elemente mit einer langen Liste von Attributen enthalten. Wenn ich versuche, die gesamte XML-Datei neu einzurücken, indem ich xmllint --format myfile.xmlnur die Elemente einrücke, bleiben die Attribute immer noch in einer einzigen Zeile.

Gibt es ein Programm (Befehlszeilen-, Windows- oder GNU/Linux-)Programm, das die Neuformatierung von XML einschließlich der Attribute unterstützt?

Beispielsweise ein XML wie:

<root>
  <node attribute1="some long attribute value" attribute2="some long attribute value" attribute3="..."/>
</root>

Die Ausgabe sollte ungefähr wie folgt aussehen:

<root>
  <node attribute1="some long attribute value"
        attribute2="some long attribute value"
        attribute3="..."/>
</root>

Antwort1

Ihre gut gemeinte Suche nach einem „Befehlszeilentool“ ist zwar vollkommen in Ordnung, aber leider glaube ich, dass jede wirklich praktikable Lösung für dieses Problem darin bestehen wird, selbst Code zu schreiben oder zumindest vorhandenen Code (wie einen XML-Parser/-Generator) zu nutzen. In den Kommentaren habe ich ein paar Dinge gepostet, die Sie ausprobieren können und die Ihnen vielleicht genau den Formatierungsstil liefern, den Sie suchen, oder auch nicht. Wenn es wirklich nahe dran ist, aber nicht ganz, ist es wahrscheinlich am besten, den Quellcode des Programms zu bearbeiten, das „fast“ dorthin gelangt. Wenn Sie keine Programmiersprachen beherrschen, kann das natürlich ein wenig in eine Sackgasse führen.

Ich nenne alle diese Lösungen "möglich", denn selbst wenn sie Attribute so formatieren, wie Sie es möchten, formatieren sie möglicherweise etwasandersin gewisser Weisenichtwollen, und dann sind Sie wieder am Ausgangspunkt. Da Sie Ihre vollständigen Transformationsanforderungen nicht angegeben haben, kann ich nur raten, welche davon für Sie akzeptabel wären. Sie müssen sie also einfach nacheinander ausprobieren, bis Sie entweder auf etwas stoßen, das funktioniert, oder es selbst erstellen, indem Sie vorhandenen Code nutzen und ein eher kleines Programm schreiben.

Mögliche Lösungen ohne Programmierung

Benutzeroberfläche

Befehlszeile

  • XMLTidy(zuletzt aktualisiert 2005; kann veraltet sein)
  • Dom4j(hier enthalten, da Ihnen die „Programmierung“ bereits vollständig in der SO-Antwort gegeben wird)

Mögliche Lösungen mit Programmierung

  • Schreiben Sie Ihr eigenes benutzerdefiniertes Programm mit einer der folgenden Möglichkeiten:
  • Xerces
  • Dom4j
  • Saxophon
  • libxml
  • Die zugrunde liegenden Bibliotheken, die Eclipse zum Parsen von XML verwendet, die es Ihnen wahrscheinlich ermöglichen würden, XML programmgesteuert zu formatieren und die benutzerdefinierten Formatierungsregeln einzurichten, wie Sie in den Eclipse-Optionen sehen

... das das XML genau so verarbeitet, wie Sie es möchten.

Siehe auchDasSO Frage.

Beachten Sie abschließend, dass Sie, wenn Sie Community-Hilfe benötigen, um sich kopfüber in das Schreiben eines Programms mit einer dieser Technologien zu vertiefen, die Frage stellen sollten, die sich speziell aneinsgewählter XML-Parser/Generator/Bibliothek aufPaketüberflussUndnichtauf SuperUser. Hier beschäftigen wir uns vor allem mit Fragen zur Nutzung bestehender Programme.

verwandte Informationen