如何在 c# 中取消转义特殊字符



>我有以下代码

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

哪里

element.LastNode包含值 "a&b"

我想成为"a&b".

我该如何替换它?

等一下,

a&b

不是有效的 XML。不能使 XML 看起来像这样。XML标准对此进行了澄清。

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


出于同样的原因,这是无效的 HTML。

<!DOCTYPE>

a&b

如果我写代码,

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

如果要制作看起来像

a&b

你可以,但它不是XML或HTML,使用HTML或XML的工具不会故意帮助你。您将创建自己的阅读器,编写器和解析器。

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

这是一个选项吗:HttpUtility.HtmlDecode Method (string(

用法:

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

尝试以下操作:

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;
    }

最新更新