0

我编写了一个用于解析 XML 的 COBOL 模块。XML 值存储在 DB2 表中,我正在运行一个选择查询来读取 XML 值。但是在解析时,第一个实例本身抛出了 XML-CODE = 317 的异常。我对此 XML 代码进行了搜索,发现此错误的描述如下 - '解析器无法确定文档编码。文件可能已损坏。

XML 没有问题,否则在插入 DB2 表时会引发错误。XML 中的第一个标签也是正确的。

有人可以帮我解决这个问题。

谢谢

4

2 回答 2

2

您可能必须在 XML 标头上指定编码。

以下是一些示例编码。

<?xml version="1.0" encoding="us-ascii"?>
<?xml version="1.0" encoding="windows-1252"?>
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-16"?>
于 2013-06-11T08:54:36.480 回答
1

你给了我们一些有用的信息……

  1. 您正在尝试在 COBOL 中解析 XML
  2. XML 来自另一台机器
  3. XML 最初是 UTF-8
  4. XML 存储在 Unicode 列中的 DB2 表中
  5. XML 有一个标头,表明它是代码页 1146
  6. 您收到的 XML-CODE 为 317

您的 COBOL 代码是用什么CODEPAGE选项编译的?可能会发生自动转换,可能标头和编码在从 DB2 检索后不再匹配。

您是在解析 PIC X 字段还是 PIC N 字段?

另外,我建议使用编译选项XMLPARSE(XMLSS),因为自 Enterprise COBOL 5.1 起已弃用“本机 COBOL”解析器。

于 2013-06-11T11:59:19.570 回答