2013-06-11 6 views
0

Я написал модуль COBOL для синтаксического анализа XML. Значение XML хранится в таблице DB2, и я запускаю запрос select для чтения значения XML. Но при синтаксическом анализе в первом экземпляре он генерирует исключение с XML-CODE = 317. Я выполнил поиск по этому XML-коду и нашел описание этой ошибки следующим образом: «Парсер не может определить кодировку документа. Документ может быть поврежден.XML Parsing Cobol

Нет проблемы с XML, иначе это могло бы вызвать ошибку при вставке в таблицу DB2. 1-й тег в XML - это тоже правильно.

Может кто-нибудь, пожалуйста, помогите мне в решении этой проблемы.

Thanks

+1

Я склоняюсь к тому, что говорит компьютер. Компьютер не может обманывать себя «мыслящим» для себя тем, что он знает что-то, что не подтверждается данными. Если вы правильно определили сообщение, я верю, что говорит компьютер, а не то, что вы думаете. Сосредоточьтесь на том, как парсер определяет кодировку документа. –

+0

Не могли бы вы помочь мне узнать, как определить, как парсер определяет кодировку документа. Перед загрузкой XML Кодирование было UTF-8, и после того, как XML вставлен, написано, что кодировка - IBM01146. Также я проверил, что таблица является таблицей UNICODE. – user2169418

ответ

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"?> 
+0

Заголовок XML уже присутствует как user2169418

+0

Возможно, это помогает. http://mindprod.com/jgloss/encoding/ibm01146.html –

1

Вы дали нам полезную информацию ...

  1. Вы пытаетесь разобрать XML в COBOL
  2. XML-исходит от другой машины
  3. XML, изначально UTF-8
  4. XML хранится в таблице DB2 в столбце Unicode
  5. В XML есть заголовок, указывающий, что это code page 1146
  6. Вы получаете в XML-код 317

Что CODEPAGE вариант был ваш код COBOL скомпилирован с? Может произойти автоматическое преобразование, возможно, заголовок и кодировка больше не совпадают после извлечения из DB2.

Вы анализируете поле PIC X или поле PIC N?

Кроме того, я предлагаю использовать параметр компиляции XMLPARSE(XMLSS), поскольку парсер «native COBOL» устарел от Enterprise COBOL 5.1.