我有一个问题一直困扰着我,我似乎无法找到一个有效的解决方案。我有一个字符串,它来自xml文档,格式如下。
var str="<p><a href="http://antwrp.gsfc.nasa.gov/apod/ap131120.html"><img src="http://antwrp.gsfc.nasa.gov/apod/calendar/S_131120.jpg" align="left" alt="What are black hole jets made of?" border="0" /></a> What are black &amp; hole jets made of?</p><br clear="all"/>";
我用过
var dec = decodeURI(str);
我希望以HTML格式呈现的输出,而不是我在下面看到的输出。
<p><a href="http://antwrp.gsfc.nasa.gov/apod/ap131120.html"><img src="http://antwrp.gsfc.nasa.gov/apod/calendar/S_131120.jpg" align="left" alt="What are black hole jets made of?" border="0" /></a> What are black & hole jets made of?</p><br clear="all"/>
我尝试使用
将此解码数据发送到HTML文档document.write(dec)
和
document.getElementById("output").innerHTML=dec;
答案 0 :(得分:1)
您可以手动替换所有实体
function unescape(str){
return str.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, '"')
.replace(/&/g, "&");
}
var str="<p><.../>";
document.getElementById("output").innerHTML = unescape(str);
答案 1 :(得分:0)
您对URL encoding和html/xml entities感到困惑。它们是两种不同的编码方法。例如,在网址编码中,<
编码为%3C
,但对于实体,则为<
如果您运行console.log(decodeURI(str))
,您会注意到"
等大多数内容保持不变,因为decodeURI()
不会解码html实体。
要解决此问题,您可以让xml返回正确的URL编码:
var str="%3Cp%3E%3Ca href=%22http://antwrp.gsfc.nasa.gov/apod/ap131120.html%22%3E%3Cimg src=%22http://antwrp.gsfc.nasa.gov/apod/calendar/S_131120.jpg%22align=%22left%22alt=%22What are black hole jets made of?%22border=%220%22/%3E%3C/a%3E What are black hole jets made of?%3C/p%3E%3Cbr clear=%22all%22/%3E";
或者您可以使用a piece of Javascript function解码您现在拥有的实体。
答案 2 :(得分:0)
有一个JavaScript Library可能会对此有所帮助。请参阅此Fiddle。
var str="<p><a href="http://antwrp.gsfc.nasa.gov/apod/ap131120.html"><img src="http://antwrp.gsfc.nasa.gov/apod/calendar/S_131120.jpg" align="left" alt="What are black hole jets made of?" border="0" /></a> What are black &amp; hole jets made of?</p><br clear="all"/>";
$("#output").html(_.unescape(str));