2017-02-03 2 views
-1

Ich habe eine XML-Datei mit SAX-WRITER in Progress 4GL erstellt. Beim Öffnen der XML-Datei in Notepad ++ kommt das schließende Tag ohne Daten in die nächste Zeile, aufgrund dessen der Drucker diese XML-Datei ablehnt. Ich habe XML-Plugins auch in Notepad ++ installiert, immer noch kein Glück. Ich möchte, dass das schließende Tag in derselben Zeile erscheint, wenn keine Daten für dasselbe vorhanden sind. Siehe unten für Tag Probe -XML mit SAX-Writer in Progress 4G

<customer> 
    <name> Test Name </name> 
    <addr1> Address1 </addr1> 
    <addr2> 
    </addr2> 
    <addr3> Address3 </addr3> 
    <dob> 25/02/1990 </dob> 
</customer> 
+1

Bitte stellen Sie eine spezifische Frage. – awiebe

+1

Bitte geben Sie den 4GL-Code ein, der zum Erstellen der XML-Datei verwendet wird. Erwähnen Sie auch die OpenEdge-Version. – Austin

+0

Sind Sie sicher, dass die Daten, die Sie an addr2 ausgeben, kein eingebettetes (und uncodiertes) Zeilenvorschubzeichen sind? –

Antwort

2

Überprüfen Sie Ihre Daten für alle Sonderzeichen. Vielleicht entfernen Sie nachfolgende Zeilenumbrüche, Leerzeichen usw.? Es sieht so aus, als ob deine XML viele Überschriften und nachgestellte Leerzeichen enthält (oder ist es genau das, was du hier im Post geschrieben hast).

Zum Beispiel:

<dob> 25/02/1990 </dob> 

Sollte höchstwahrscheinlich sein:

<dob>25/02/1990</dob> 

Im Code unter dem "newline" data-Element enthält eine neue Zeile und übersetzt sie in das gleiche Verhalten wie Sie Beiträge verfassen .

DEFINE VARIABLE h AS HANDLE  NO-UNDO. 
CREATE SAX-WRITER h. 

h:SET-OUTPUT-DESTINATION("file", "c:\temp\sax.xml"). 

h:FORMATTED = TRUE. 

h:START-DOCUMENT(). 

h:START-ELEMENT("customer"). 

h:WRITE-DATA-ELEMENT("name","Test name"). 
h:WRITE-DATA-ELEMENT("addr","Address1"). 
h:WRITE-DATA-ELEMENT("addr2",""). 
h:WRITE-DATA-ELEMENT("addr3","Adress3"). 
h:WRITE-DATA-ELEMENT("newline","~n"). 
h:WRITE-DATA-ELEMENT("spaces","   "). 
h:WRITE-DATA-ELEMENT("dob", "25/02/1990"). 
h:END-ELEMENT("customer"). 
h:END-DOCUMENT(). 

DELETE OBJECT h. 

sax.xml:

<?xml version="1.0"?> 
<customer> 
    <name>Test name</name> 
    <addr>Address1</addr> 
    <addr2></addr2> 
    <addr3>Adress3</addr3> 
    <newline> 
</newline> 
    <spaces>   </spaces> 
    <dob>25/02/1990</dob> 
</customer> 

nachlauf zu entfernen und Kursräumen können Sie die TRIM-Funktion verwenden.

+0

Hallo, Vielen Dank für Ihre Antwort. Das Problem war mit dem Startelement des Tags. –

+0

Das Problem war mit dem Startelement des Tags. h: START-ELEMENT startet das Tag h: END-ELEMENT beendet das Tag in einer anderen Zeile. Ich habe meine Daten mit Schreibdaten behandelt, um das Start-und Closing-Tag in derselben Zeile zu zeigen h: WRITE-DATA-ELEMENT –