在Progress 4Gl中使用SAX-writer的XML

时间:2017-02-03 06:34:49

标签: xml sax progress-4gl

我在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>

1 个答案:

答案 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函数。