в надлежащем файле XML, вы не можете иметь автономный &
характер, если она не является маскирующим. Поэтому, если вам нужен узел XML, содержащий good–bad
, тогда он должен быть закодирован как good–bad
. Не существует обходного пути, так как ничего другого не будет действительным XML. Единственный способ заставить его работать - просто написать XML-файл в виде обычного текста, как вы этого хотите, но затем он не может быть прочитан синтаксическим анализатором XML, поскольку он не является надлежащим XML.
Вот пример кода моего предложил обходной путь (вы не указали язык, поэтому я покажу вам, в C#, но Java должны иметь что-то подобное):
using(var sw = new StreamWriter(stream))
{
// other code to write XML-like data
sw.WriteLine("<node>good–bad</node>");
// other code to write XML-like data
}
Как вы обнаружили, другой вариант заключается в использовании метода WriteRaw()
на XmlTextWriter
(в C#), который напишет незарегистрированную строку, но это не изменит факт, что он не будет действительным XML-файлом, когда это будет сделано.
Но, как я уже упоминал, если вы попытаетесь прочитать это с помощью XML-анализатора, это не сработает, потому что &ndash
не является допустимым символом XML-символа, поэтому он недействителен XML.
–
- объект символа HTML, поэтому избежать его в XML обычно не требуется.
В языке XML &
является символом escape, поэтому &
соответствует строчному представлению &. Вы не можете использовать только & характера, так как & персонаж имеет особый смысл и, следовательно, один & символа будет неправильно истолкован анализатором/
Вы увидите подобное поведение с <,>,», и» символы.Все имеют смысл в XML-языке, поэтому, если вам нужно представить их как текст в документе.
Вот ссылка на все объекты символов в XML (and HTML) из Википедии. Каждый из них всегда будет отображаться символом эвакуации и именем (>
, <
, "
, '
)
Зачем вам нужно писать недопустимый XML? – Quentin
Я не следую твоему правлению. Можете ли вы добавить обычную текстовую (некодированную) версию того, что вы пытаетесь написать в XML? '& ndash' является символом HTML-символа, поэтому он не должен быть необходимым в файле XML. – psubsee2003
Как и то, что xmlwriter делает для «&» eg (& amp), мне нужно сделать для «-», например (& ndash). – Giri