Чтобы загрузить XmlDocument и проверить его на соответствие DTD и разрешить объекты, необходимо настроить XmlReader для проверки.
Вот пример, который работает с вашим XML-файлом
using System;
using System.Xml;
using System.Xml.Schema;
namespace DtdValidation
{
class Program
{
static void Main(string[] args)
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
settings.ValidationType = ValidationType.DTD;
settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
settings.XmlResolver = new XmlUrlResolver();
XmlDocument doc = new XmlDocument();
XmlReader reader = XmlReader.Create("data.xml", settings);
doc.Load(reader);
}
// Display any validation errors.
private static void ValidationCallBack(object sender, ValidationEventArgs e)
{
Console.WriteLine("Validation Error: {0}", e.Message);
}
}
}
Здесьиспользуется DTD, который объявляет сущность xyz
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ENTITY xyz "->">
Оригинальный ответ - я изначально неправильно прочитал вопрос
&
- это специальный символ в XML, поэтому, если вы хотите включить литерал и вам необходимо его кодировать с помощью &
Вот другие кодировки, с которыми вы можете столкнуться
< <
> >
& &
" "
' '