неверный файл XML? - PullRequest
       14

неверный файл XML?

2 голосов
/ 30 марта 2009

Я написал следующий файл в Visual Studio 2008 как новый файл XML, и он сообщает о следующей ошибке. Что такое сообщение об ошибке и почему оно рассматривается как XML-файл неправильного формата?

Вот файл XML и соответствующее сообщение об ошибке.

<?xml version="1.0" encoding="utf-8"?>
<Foo>&#x2;</Foo>

Error   1   Character ' ', hexadecimal value 0x2 is illegal in XML documents.   XMLFile1.xml    2   6   Miscellaneous Files

спасибо в avdance, George

Ответы [ 5 ]

9 голосов
/ 30 марта 2009

Ваша проблема - ссылка на & # x02, которая по сути является случайными двоичными данными, которые не могут быть напечатаны. Это недопустимо в XML1.0 (это в XML 1.1 и выше, но нет уверенности, что ваша версия .Net разрешит это, даже если вы измените версии XML).

4 голосов
/ 30 марта 2009

Я написал следующий файл в Visual Studio 2008 как новый файл XML, и это сообщает о следующей ошибке. Что такое сообщение об ошибке и почему это трактуется как неверный формат XML файла?

В соответствии со спецификацией W3C XML 1.0 , в документе XML допускаются только символы, которые ниже &#x20;: табуляция (09), новая строка (0A) и возврат каретки (0D ).

XML 1.1 допускает почти все символы , исключая 00, но очень редко применяется, и не следует полагаться на поиск реализации XML 1.1.

Даже в спецификации XML 1.1. Говорят, что использование разрешенных теперь символов ниже &#x20; "настоятельно не рекомендуется".

3 голосов
/ 30 марта 2009

Ознакомьтесь со спецификацией XML 1.0

В частности, см. Определение символов в разделе 2.2:

Char ::= #x9 | 
         #xA |
         #xD |
         [#x20-#xD7FF] |
         [#xE000-#xFFFD] |
         [#x10000-#x10FFFF]

И определение ссылок на сущности в разделе 4.1:

Символы, на которые ссылаются с помощью ссылок на символы, должны совпадать с продукцией для Char.

2 голосов
/ 30 марта 2009

Если вам нужно поместить двоичные данные в XML, используйте раздел CDATA. http://www.w3schools.com/XML/xml_cdata.asp

2 голосов
/ 30 марта 2009

0x2 не является печатным символом.

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