Кодирование символа пробела в имени XML

Мне дан XML-файл, который содержит имена, как показано ниже:

something 

Символ is представлен тремя байтами: 0xE2, 0x86, 0x82.

Похоже, что ↂ0020 должен рассматриваться как символ пространства. Но когда я читаю XML, используя System.Xml.XmlReader, символы ↂ0020 не преобразуются в пробел.

Есть ли способ их преобразования (помимо замены, конечно)? Или я просто сломал XML?

XML не разбит, но он представляет имена с использованием частного соглашения для экранирования запрещенных символов. Парсер XML не поймет это соглашение, но его можно использовать для приема.

Символы пробела не допускаются в именах XML

Существует 86 кодовых точек, имя которых содержит пространство слов . Игнорирование кодовых точек, где SPACE попадает из-за MONOSPACE и любого другого, у которого есть визуальное представление, оставляет следующее:

  • #x0020 ПРОСТРАНСТВО
  • #x00A0 NO-BREAK SPACE
  • [#x2002-#x200A] EN ПРОСТРАНСТВО через ВОЛОС
  • #x205F СРЕДНЕЕ МАТЕМАТИЧЕСКОЕ ПРОСТРАНСТВО
  • #x3000 ИДЕОГРАФИЧЕСКОЕ ПРОСТРАНСТВО

Ни одна из косвенных кодовых точек (пустое визуальное представление) не разрешена в XML-именах XML-BNF W3C для имен компонентов :

 NameStartChar ::= ":" | [AZ] | "_" | [az] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] Name ::= NameStartChar (NameChar)* 

Альтернативы пространств в именах XML

  • CamelCase
  • underscore_char
  • hyphen-char
  • period.char

Colon не следует использовать в качестве разделителя слов в именах XML, чтобы избежать путаницы с его использованием в пространствах имен XML.


ↂ разрешено в именах XML

Символ, ↂ, (0xE2, 0x86, 0x82, который является #x2182 ), не имеет ничего общего с пробелами – это РОМАНСКАЯ НОМЕРНАЯ ДЕСЯТАЯ ТЫСЯЧА . ↂ явно разрешено: #x2182 находится в диапазоне кода [#x2070-#x218F] .

0020 появляющиеся после ↂ, являются просто цифрами. Вместе с остальными персонажами в Benchↂ0020Codeↂ0020 они образуют допустимое (хотя и нетрадиционное) название XML. Они не представляют собой пробелы в имени XML, поскольку пробелы не допускаются в именах XML.

  • Linq to XML - обновление / изменение узлов XML-документа
  • Есть ли свободные инструменты Xml Diff / Merge?
  • Вопросительный знак (?) В атрибутах XML для Android
  • В чем разница между «или» и «|» при программировании в xslt?
  • Является ли запись закрывающих тегов для элементов, которые не являются традиционно пустой плохой практикой?
  • HTML внутри XML. Должен ли я использовать CDATA или кодировать HTML
  • Включение файла XML в файл XML / XSL
  • Перемещение и исчезновение строк кода; проблема с XML-редактором Eclipse
  • XPath - Разница между узлом () и текстом ()
  • org.xml.sax.SAXParseException: содержимое не допускается в prologе
  • Почему «Данные на корневом уровне недействительны. Строка 1, позиция 1. «для XML-документа?
  • Давайте будем гением компьютера.