如何在 c# 中取消转义特殊字符
本文关键字:取消 转义 特殊字符 | 更新日期: 2023-09-27 18:25:59
>我有以下代码
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&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(" ", " ");
htmlstring = htmlstring.Replace("&", "&");
return htmlstring;
}