&#x...;
не ссылка на сущность, это ссылка на символ.Для синтаксического анализатора XML —
абсолютно идентичен необработанному символу —
, поэтому, если вы посмотрите на DOM, созданный синтаксическим анализатором XML, через свойство, такое как element.text
, вы не увидите ничего с амперсандом в нем, но простой —
символ.
Итак, в принципе, вы бы сопоставили его с регулярным выражением, например, /[—– ]/
.Однако, если вы используете Ruby 1.8, у вас есть проблема в том, что сам язык не поддерживает Unicode, поэтому группа символов в /[—– ]/
не будет работать должным образом: она будет пытаться удалить каждый байтв представлении UTF-8 –
, —
и
, которое, вероятно, будет искажать любые другие символы.
Простая замена строки для каждого целевого символа будет работать правильно, поскольку это нетребует специальной обработки символов.(Естественно, если бы вы включили такие символы, как —
непосредственно в исходный код, вам также нужно было бы правильно настроить кодировку файла этого сценария, поэтому, вероятно, проще использовать экранированный строковый литерал, например "\xe2\x80\x94"
.)