如何在c#中展开特殊字符

时间:2014-10-09 09:29:08

标签: c# xelement

我有以下代码

XElement element = new XElement("test", "a&b");

其中

element.LastNode包含值"a&b"

我想成为"a&b"

我该如何替换它?

3 个答案:

答案 0 :(得分:4)

等一下,

  

<试验>将&安培; b将/试验>

不是有效的XML。您不能使XML看起来像这样。这是clarified by the XML standard

&具有特殊含义,它表示可能无效的转义字符。 '&'字符在XML中编码为&


因为它的价值,出于同样的原因,这是无效的HTML。

  

<!DOCTYPE html> < HTML> <身体GT; a& b< / body> < / HTML>


如果我写代码,

const string Value = "a&b";
var element = new XElement("test", Value);
Debug.Assert(
    string.CompareOrdinal(Value, element.Value) == 0,
    "XElement is mad");

运行时没有错误,XElement根据需要对XML进行编码和解码。

要浏览或解码XML元素,您只需阅读XElement.Value

如果你想制作一个看起来像

的文件
  

<试验>将&安培; b将/试验>

你可以但它不是XML或HTML,使用HTML或XML的工具不会故意帮助你。你将制作自己的读者,作家和解析器。

答案 1 :(得分:3)

&是一个保留字符,因此它将始终被编码。所以你必须解码:

这是一个选项: HttpUtility.HtmlDecode Method (String)

用法:

string decoded = HttpUtility.HtmlDecode("a&b");
// returns "a&b"

答案 2 :(得分:0)

请尝试以下操作:

public static string GetTextFromHTML(String htmlstring)
    {
        // replace all tags with spaces...
       htmlstring= Regex.Replacehtmlstring)@"<(.|\n)*?>", " ");

       // .. then eliminate all double spaces
       while (htmlstring).Contains("  "))
       {
           htmlstring= htmlstring.Replace("  ", " ");
        }

       // clear out non-breaking spaces and & character code
       htmlstring = htmlstring.Replace("&nbsp;", " ");
       htmlstring = htmlstring.Replace("&amp;", "&");

       return htmlstring;
    }