Я занимаюсь разработкой класса для системы управления контентом.Входной контент предоставляется в формате XHTML.И он может содержать действительные экранированные символы, такие как £
См. Пример ниже.
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head xmlns="">
<meta name="Attr_DocumentTitle" content="Hello World Books" />
</head>
<body>
<div>British Pound £</div>
<div>Registered sign ®</div>
<div>Copyright sign © </div>
</body>
</html>
Моя цель - написать метод, который загружает это в объект XML .Net, выполняет некоторую обработку и сохраняет в базе данных.Я хочу сохранить сбежавших персонажей такими, какие они есть.И вот мой метод:
public static XmlDocument LoadXmlFromString(string xhtmlContent)
{
byte[] xhtmlByte = Encoding.ASCII.GetBytes(xhtmlContent);
MemoryStream mStream = new MemoryStream(xhtmlByte);
XmlReaderSettings settings = new XmlReaderSettings();
//Upon loading XML, prevent DTD download, which would be blocked by our
//firewall and generate "503 Server Unavailable" error.
settings.XmlResolver = null;
settings.ProhibitDtd = false;
XmlReader reader = XmlReader.Create(mStream, settings);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xhtmlContent);
return xmlDoc; //Value of xmlDoc.InnerXml contains £ ® © in place
// of £ ® and ©
}
Этот метод, однако, преобразует экранированные символы в их символьные эквиваленты.Как я могу избежать этого и сохранить сбежавших персонажей.