1

假设我有一个带有转义符号 (&) 的 xml。然后我如何读回它,以便结果给我“未转义”的文本。

运行以下命令会给我“&” 作为结果。我如何返回'&'

void Main()
{
  var xml = @"
  <a>
    &amp;
  </a>
  ";
  var doc = new XmlDocument();
  doc.LoadXml(xml);
  var ele = (XmlElement)doc.FirstChild;
  Console.WriteLine (ele.InnerXml); 
}
4

6 回答 6

5

使用ele.InnerText代替ele.InnerXml

于 2012-08-29T15:29:48.293 回答
1

您可以使用 CDATA 来获取您的数据

像“<”和“&”这样的字符在 XML 元素中是非法的。“<”解析器将其解释为新元素的开始。"&" 解析器将其解释为字符实体的开始。

于 2012-08-29T12:54:43.180 回答
0

以下字符在 XML 元素中是非法的:

Illegal EscapedUsed
------------------
    "   &quot;
    '   &apos;
    <   &lt;
    >   &gt;
    &   &amp;

要获得未转义的值,您可以使用:

 public string UnescapeXMLValue(string xmlValue)
  {
    if (string.IsNullOrEmpty(s)) return s;
   string temp = s;
   temp = temp.Replace("&apos;", "'").Replace("&quot;", "\"").Replace("&gt;", ">").Replace("&lt;", "<").Replace("&amp;", "&");
   return temp ;
 }

要获得转义值,您可以使用:

public string EscapeXMLValue(string value)
  {
    if (string.IsNullOrEmpty(s)) return s;
   string temp = s;
   temp = temp.Replace("'","&apos;").Replace( "\"", "&quot;").Replace(">","&gt;").Replace( "<","&lt;").Replace( "&","&amp;");
   return temp ;
 }
于 2012-08-29T13:28:13.017 回答
0
use
 HttpServerUtility.HtmlDecode (ele.InnerXml);
于 2012-08-29T12:56:30.433 回答
0
Console.WriteLine (HttpUtility.UrlDecode(String.Format("{0}",ele.InnerXml)));
于 2012-08-29T12:56:40.730 回答
0

尝试使用此静态方法来解码转义字符:HttpServerUtility.HtmlDecode Method (String) 请参见此处的示例:http: //msdn.microsoft.com/ru-ru/library/hwzhtkke.aspx

于 2012-08-29T13:01:10.230 回答