如何处理XML生成命令中的XML编码



我们正面临一个问题,其中XML消息中带有特殊字符(例如[XML有效字符。我们发现的是,当未指定时,该字符是分配给消息的默认编码的无效字符。如果我们专门将编码类型添加到消息顶部,我们可以避免这种情况。我们使用了UTF-8编码。因此,通过将"添加到XML的开头消息,字符应成为有效字符。以下是COBOL代码:

XML GENERATE RESPONSEDATA FROM ACCT  
    COUNT IN RESPONSEDATALL                  
            WITH ENCODING 1208                      
            WITH XML-DECLARATION                    
END-XML

但是,当我们看到XML生成的时,它由字符组成,如下所示:

..Ì_%.ÎÁÊËÑ?>.......Á>Ä?ÀÑ>Å..UTF-8.... 

预期的输出是下面的编码位应添加到标题中。

<?xml version=“1.0” encoding=“utf-8”?>

因此,问题在于,当该生成的XML再次以代码的态度重新解析时,它会封闭XML- exception并完全退出并提供异常消息。

问题是还有其他一些代码或编译选项的态度,需要添加以使此XML有效吗?

这是完全正常的。

您将XML编码为UTF-8,但是您在大型机上查看XML(EBCDIC(。当您的ISPF查看器打开您创建的XML文件时,它只会解释十六进制值并试图向您展示一些东西。由于这些值与EBCDIC字符集不符,因此看起来像垃圾。如果将文件ftp向下ftp,您将看到XML实际上是您正在寻找的输出。

当您解析XML时,实际上必须做一些类似的事情,并指定生成过程中使用的编码。下面的代码将解析UTF-8 XML,并且在例外,它将显示所有XML,直到异常发生在EBCDIC中,因此在Mainframe sysout

中可以读取。
XML PARSE WS-MY-XML
   ENCODING 1208
   PROCESSING PROCEDURE XXXX-PROCESS-XML
   ON EXCEPTION
      DISPLAY "EXCEPTION OCCURED: "
      DISPLAY FUNCTION DISPLAY-OF (
         FUNCTION NATIONAL-OF (
            XML-TEXT 1208
         )
         1140
      )
END-XML

编辑:话虽这么说,XML中仍然可能存在合法错误,例如非法字符。如果我发布的代码也确实有效,请FTP XML并通过XML验证器在线运行,以查看故障在哪里。

最新更新