我正在开发一个内容管理系统的类。输入内容以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 ©
}
使用这种方法会将转义字符转换为它们的实际字符。我该如何避免这种情况,保留转义字符呢?
£
这样的字符时遇到问题,则只需让浏览器知道您发送的文档的编码即可解决该问题,请确保设置Content-Type HTTP标头的charset参数。 - Martin Honnen