2012-08-29 46 views
1

假設我有一個帶有「&符號」的xml(&)。然後,我怎麼讀回來,以便結果給我「未轉義」的文字。從cml中的XmlDocument讀取特殊字符

運行以下給我「& amp」作爲結果。我該如何找回「&」

void Main() 
{ 
    var xml = @" 
    <a> 
    &amp; 
    </a> 
    "; 
    var doc = new XmlDocument(); 
    doc.LoadXml(xml); 
    var ele = (XmlElement)doc.FirstChild; 
    Console.WriteLine (ele.InnerXml); 
} 

回答

5

使用ele.InnerText ele.InnerXml

1

你可以使用CDATA爲了讓您的數據

字符,如「<」和「&」在XML元素是非法的。「<」的解析器將其解釋爲新元素的開始。 「&」解析器將其解釋爲字符實體的開始。

0
use 
HttpServerUtility.HtmlDecode (ele.InnerXml); 
0
Console.WriteLine (HttpUtility.UrlDecode(String.Format("{0}",ele.InnerXml))); 
0

以下字符是非法的XML元素:

Illegal EscapedUsed 
------------------ 
    " &quot; 
    ' &apos; 
    < &lt; 
    > &gt; 
    & &amp; 

要獲取可以使用的非轉義值:

public string UnescapeXMLValue(string xmlValue) 
    { 
    if (string.IsNullOrEmpty(s)) return s; 
    string temp = s; 
    temp = temp.Replace("&apos;", "'").Replace("&quot;", "\"").Replace("&gt;", ">").Replace("&lt;", "<").Replace("&amp;", "&"); 
    return temp ; 
} 

要獲得轉義值可以使用:的代替

public string EscapeXMLValue(string value) 
    { 
    if (string.IsNullOrEmpty(s)) return s; 
    string temp = s; 
    temp = temp.Replace("'","&apos;").Replace("\"", "&quot;").Replace(">","&gt;").Replace("<","&lt;").Replace("&","&amp;"); 
    return temp ; 
}