假设我有一个带有转义符号(&)的xml。然后我如何阅读它,以便结果给我“未转义”文本。
运行以下内容会给我“& amp”作为结果。如何取回'&'
void Main()
{
var xml = @"
<a>
&
</a>
";
var doc = new XmlDocument();
doc.LoadXml(xml);
var ele = (XmlElement)doc.FirstChild;
Console.WriteLine (ele.InnerXml);
}
答案 0 :(得分:5)
使用 ele.InnerText 代替 ele.InnerXml
答案 1 :(得分:1)
您可以使用CDATA来获取数据
像“&lt;”这样的字符和“&amp;”在XML元素中是非法的。“&lt;”解析器将其解释为新元素的开头。 “&安培;”解析器将其解释为字符实体的开头。
答案 2 :(得分:0)
use
HttpServerUtility.HtmlDecode (ele.InnerXml);
答案 3 :(得分:0)
Console.WriteLine (HttpUtility.UrlDecode(String.Format("{0}",ele.InnerXml)));
答案 4 :(得分:0)
尝试使用此静态方法解码转义字符: HttpServerUtility.HtmlDecode方法(String) 见这里的例子: http://msdn.microsoft.com/ru-ru/library/hwzhtkke.aspx
答案 5 :(得分:0)
以下字符在XML元素中是非法的:
Illegal EscapedUsed
------------------
" "
' '
< <
> >
& &
要获得未转义的值,您可以使用:
public string UnescapeXMLValue(string xmlValue)
{
if (string.IsNullOrEmpty(s)) return s;
string temp = s;
temp = temp.Replace("'", "'").Replace(""", "\"").Replace(">", ">").Replace("<", "<").Replace("&", "&");
return temp ;
}
要获取转义价值,您可以使用:
public string EscapeXMLValue(string value)
{
if (string.IsNullOrEmpty(s)) return s;
string temp = s;
temp = temp.Replace("'","'").Replace( "\"", """).Replace(">",">").Replace( "<","<").Replace( "&","&");
return temp ;
}