Загрузка содержимого XML или XHTML с использованием кодированных или экранированных символов html - PullRequest
3 голосов
/ 20 декабря 2010

Я занимаюсь разработкой класса для системы управления контентом.Входной контент предоставляется в формате 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   &#163;</div>

 <div>Registered sign &#174;</div>

 <div>Copyright sign &#169; </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 &#163; &#174; and &#169;
}

Этот метод, однако, преобразует экранированные символы в их символьные эквиваленты.Как я могу избежать этого и сохранить сбежавших персонажей.

1 Ответ

2 голосов
/ 14 января 2011
...