我在Progress 4GL中使用SAX-WRITER创建了一个XML文件。 在notepad ++中打开XML文件时,没有数据的结束标记出现在下一行,因为打印机拒绝该XML文件。 我在记事本++中也安装了XML插件,但仍然没有运气。 如果没有相同的数据,我希望结束标记在同一行。请参阅下面的标签 样本 -
<customer>
<name> Test Name </name>
<addr1> Address1 </addr1>
<addr2>
</addr2>
<addr3> Address3 </addr3>
<dob> 25/02/1990 </dob>
</customer>
答案 0 :(得分:2)
检查您的数据是否有任何特殊字符。也许清除拖尾的换行符,空格等?看起来你的xml包含很多标题和尾随空格(或者它只是你在帖子中写的内容)。
例如:
<dob> 25/02/1990 </dob>
最有可能是:
<dob>25/02/1990</dob>
在下面的代码中,“newline”数据元素包含一个换行符,它会转换为与发布时相同的行为。
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>
要删除尾随和标题空间,您可以使用TRIM
函数。