我有以下代码
XElement element = new XElement("test", "a&b");
其中
element.LastNode
包含值"a&b"
。
我想成为"a&b"
。
我该如何替换它?
答案 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(" ", " ");
htmlstring = htmlstring.Replace("&", "&");
return htmlstring;
}