Используя следующий ответ: https://stackoverflow.com/a/9003931/689044, я создал файл и разместил его в Gist на GitHub: https://gist.github.com/cerkit/c2814d677854308cef57 для тех из вас, кому нужны сущности в файле.
Я успешно использовал его с ASP.NET MVC, загрузив текстовый файл в объект Application и используя это значение с моим (правильно сформированным) HTML, для анализа System.Xml.XmlDocument.
XmlDocument doc = new XmlDocument();
// load the HTML entities into the document and add a root element so it will load
// The HTML entities are required or it won't load the document if it uses any entities (ex: –)
doc.LoadXml(string.Format("{0}<root>{1}</root>", Globals.HTML_ENTITIES, control.HtmlText));
var childNodes = doc.SelectSingleNode("//root").ChildNodes;
// do your work here
foreach(XmlNode node in childNodes)
{
// or here
}
Globals.HTML_ENTITIES - это статическое свойство, которое загружает объекты из текстового файла и сохраняет их в объекте приложения, или использует значения, если они уже загружены в объект приложения.
public static class Globals
{
public static readonly string APPLICATION_KEY_HTML_ENTITIES = "HTML_ENTITIES";
public static string HTML_ENTITIES
{
get
{
string retVal = null;
// load the HTML entities from a text file if they're not in the Application object
if(HttpContext.Current.Application[APPLICATION_KEY_HTML_ENTITIES] != null)
{
retVal = HttpContext.Current.Application[APPLICATION_KEY_HTML_ENTITIES].ToString();
}
else
{
using (StreamReader sr = File.OpenText(HttpContext.Current.Server.MapPath("~/Content/HtmlEntities/RootHtmlEntities.txt")))
{
retVal = sr.ReadToEnd();
HttpContext.Current.Application[APPLICATION_KEY_HTML_ENTITIES] = retVal;
}
}
return retVal;
}
}
}
Я попытался создать длинную строку для хранения значений, но Visual Studio продолжал сбой, поэтому я решил, что лучшим способом будет загрузить текстовый файл во время выполнения и сохранить его в объекте Application.