Flex: сообщение об ошибке «правильно сформированной» разметки, даже если XML правильно сформирован - PullRequest
1 голос
/ 16 сентября 2010

Я пытаюсь загрузить XML из ByteArray следующим образом:

var xmlString:String = myByteArray.readUTFBytes(numBytes);
var myXML:XML = new XML(xmlString);

При этом я получаю следующую ошибку времени выполнения в конструкторе XML при запуске в Flash Player 9:

Ошибка типа: ошибка # 1088: разметка в документе после корневого элемента должна быть правильно сформирована.

Это сообщение об ошибке не появляется в Flash Player 10.Можно использовать отладчик, чтобы убедиться, что XML выглядит правильно.XML находится в UTF-8.

1 Ответ

1 голос
/ 16 сентября 2010

Решение этой конкретной проблемы для меня заключалось в том, что в самом начале файла был ненужный Порядок следования байтов , который мне пришлось удалить.После проверки файла с помощью шестнадцатеричного редактора я увидел следующие байты в файле:

EF BB BF

Среда выполнения Flash Player 9, по-видимому, имеетпроблема с этой меткой порядка байтов в файле UTF-8, которая не нужна, поскольку в UTF-8 нет порядка байтов, в отличие от UTF-16 и UTF-32.Flash Player 10 не имеет проблем с этой ведущей меткой порядка байтов.

Это объясняет, почему эта другая запись блога подтверждает, что для них сработало следующее решение:

xmlString = xmlString.substr(1);

Это конкретное решение не вполне мне помогло, поскольку оно переместило ошибку времени выполнения на пользователей Flash Player 10 вместо пользователей Flash Player 9.Поскольку у нас был контроль над вводом XML, мы могли бы просто изменить его, но если XML поступил из источника, который мы не контролировали, я полагаю, что мы могли бы протестировать ByteArray для ведущей спецификации и пропустить его, как показано выше.

Несколько записей в блоге помогли подтвердить, что проблема была в спецификации, например, в этой записи 1019 *, в которой комментатор утверждает, что его решение той же ошибки времени выполнения 1088 было:

Для меня проблема была в том, что XML сохранен в UTF с спецификацией.

Кроме того, эта другая запись блога предоставила больше подтверждений той же проблемы, возникающей в Java:

При работе с RSS-каналом в кодировке UTF-8 этот трехбайтовый шаблон (0xEF 0xBB 0xBF) в> прологе может вызвать всевозможные интересные проблемы синтаксического анализа XML

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...