我从Web服务端点获取数据,并将其放入for循环中的列表中。该服务从Wordpress网站获取数据。
var list = new ItemList
(
(string)data.id.ToString(),
(string)data.name,
(string)subcategory
);
然后我在XAML页面上打印它。代码工作正常,因为它成功地从服务获取数据并将其打印在我的Windows 8应用程序的页面上。
但是在(string)data.name,
中,如果名称包含“&”,则为项目的名称。它在应用中显示为$#038;
。此外,如果项目名称包含“'”,撇号,则显示为’.
EG。 D& G,显示为D $#038; ģ
“&”并且“'”显示为这些奇怪的符号。
我如何摆脱这些并修复它们,以便它们在应用程序中正确呈现。
答案 0 :(得分:2)
我将冒险给你一个错误的提示,因为我猜你在谈论Windows 8商店应用程序(XAML),因此你无法访问.NET上的每个类,但是...
如何解码HTML实体?
检查此HttpUtility方法:HtmlUtility.HtmlDecode。
检查System.dll
上的WebUtility.HtmlDecode,因此适用于Windows 8商店应用。
您需要在Visual Studio项目中添加对 System.Web
的引用。
答案 1 :(得分:0)
你可以use WebUtility.HtmlDecode Method (String)
或者,如果您不想添加其他库,则可以使用。
public string Decode(string text)
{
var replacements = new Dictionary<string, char> {
{ "’", ''' },
// ...etc
}
var sb = new StringBuilder( text );
foreach( var c in replacements.Keys ) {
sb.Replace( c.ToString(), replacements[c] );
}
return sb.ToString();
}
答案 2 :(得分:0)
看起来该服务正在返回XML转义实体。 &
表示代码为(十进制)38(&
)的字符。 ’
类似,代码为8217(’
)。
您可以使用System.Web.HttpUtility.HtmlDecode(inputString)
对这些进行解码,但这需要引用System.Web。如果您不想或不能参考,可以尝试这样的事情:
var xml = new XmlDocument();
xml.LoadXml("<x>" + inputString + "</x>");
var output = xml.InnerText;
鉴于Testing ’stuff" & things
,它将返回Testing ’stuff" & things
。
如果可以,我会选择HtmlDecode()
,但除非您别无选择,否则请尽量避免使用自己的解码器。