使用XSL 1.0解析URL编码的XML到UTF-8
我在解析以下XML文件时遇到问题:使用XSL 1.0解析URL编码的XML到UTF-8,xml,xslt,encoding,utf-8,Xml,Xslt,Encoding,Utf 8,我在解析以下XML文件时遇到问题: +金砖四国+++ %C3%9Clkeleri+Esnek+EYF%26lt%3B%2Ftd%26gt%3B++%26lt%3Btd%26gt%3B0%2C016178%26lt%3B%2Ftd%26gt%3B++%26lt%3Btd%26gt%3B-0%2C52%26lt%3B%2Ftd%26gt%3B++ %26lt%3B%2Ftr%26gt%3B++%26lt%3Btr%26gt%3B++%26lt%3Btd%26gt%3BEmeklilik+Fo
+金砖四国+++
%C3%9Clkeleri+Esnek+EYF%26lt%3B%2Ftd%26gt%3B++%26lt%3Btd%26gt%3B0%2C016178%26lt%3B%2Ftd%26gt%3B++%26lt%3Btd%26gt%3B-0%2C52%26lt%3B%2Ftd%26gt%3B++
%26lt%3B%2Ftr%26gt%3B++%26lt%3Btr%26gt%3B++%26lt%3Btd%26gt%3BEmeklilik+Fonlar%C4%B1++%28BES%29+++++Karma++%26amp%3B+Esnek+Fonlar%26lt%3B%2Ftd%26gt%3B+++
%26lt%3Btd%26gt%3B++%26lt%3B%2Ftd%26gt%3B++%26lt%3Btd%26gt%3B++%26lt%3B%2Ftd%26gt%3B++%2Ftr%26gt%3B++%26lt%3Btr%26gt%3B++%26lt%3Btd%26gt%3BAllianz+Ya%C5%9Fam+ve+Em。
+%C4%B0kinci+++Esnek+EYF%26lt%3B%2Ftd%26gt%3B++%26lt%3Btd%26gt%3B0%2C050458%26lt%3B%2Ftd%26gt%3B++%26lt%3Btd%26gt%3B-0%2C61%26lt%3B%2Ftd%26gt++%26lt%3B%2Ftr%26gt%3B++
%26lt%3Btr%26gt%3B++%26lt%3Btd%26gt%3BANADOU+Hayat+Em.+B%C3%BCy%C3%BC.+Ama.++++%C4%B0ki.+Es.+EYF%26lt%3B%2Ftd%26gt%3B++%26lt%3Btd%26gt%3B0%2C043109%26lt%3B%2Ftd%26gt%3B+++
%26lt%3Btd%26gt%3B-0%2C20%26lt%3B%2Ftd%26gt%3B++%26lt%3B%2Ftr%26gt%3Btr%26gt%3B++%26lt%3Btd%26gt%3BFiba+Em.+ve+Hay.+%C4%B0kinci+++Standart+EYF%26lt%3B%2Ftd%26gt%3bt+++
%26lt%3Btd%26gt%3B0%2C011639%26lt%3B%2Ftd%26gt%3B++%26lt%3B-0%2C16%26lt%3B%2Ftd%26gt%3B++%26lt%3B%2Ftr%26gt%3B++%3B++%26lt%3Btd%26gt%3B++%C4%B1f+Em。
+格里尔+Am.+2.+Esnek+++EYF%26lt%3B%2Ftd%26gt%3B++%26lt%3Btd%26gt%3B0%2C020458%26lt%3B%2Ftd%26gt%3B++%26lt%3Btd%26gt%3B-0%2C15%26lt%3B%2Ftd%26gt++%26lt%3B%2Ftr%26gt++%
+++%26lt%3Btd%26gt%3BNN+Hay.+Em.+Kamu+Bor%C3%A7lanma+++Ara%C3%A7lar%C4%B1+标准+EYF%26lt%3B%2Ftd%26gt%3B++%26lt%3Btd%26gt%3B0%2C033045%26lt%3B%2Ftd%26gt%3B+++
%26lt%3Btd%26gt%3B-0%2C02%26lt%3B%2Ftd%26gt%3B++%26lt%3B%2Ftr%26gt%3B++%26lt%3Btr%26gt%3B++%26lt%3Btd%26gt%3BEMEKLLIK+Fonlar%C4%B1++%28BES%29+-+++
Kat%C4%B1l%C4%B1m+Fonlar%C4%B1%26lt%3B%2Ftd%26gt%3B++%26lt%3B++%26gt%3B++%26lt%3B%2Ftd%26gt%3B++%26lt%3B%26GTD%2Ftd%26gt%3B++%26lt%3B++%3B%2Ftr%26gt++%26gt%3B++%26lt%3B%3B+++
%26lt%3Btd%26gt%3BKat%C4%B1l%C4%B1m+Em+ve+Hay.+++Alter.%C4%B0kinci+Esnek%28D%C3%B6viz%29+EYF%26lt%3B%2Ftd%26gt%3B++%26lt%3B%3Btd%26gt%3B0%2C011757%26lt%3B%2Ftd%26gt%3B+++
%26lt%3Btd%26gt%3B-0%2C31%26lt%3B%2Ftd%26gt%3B++%26lt%3B%2Ftr%26gt%3Btr%26gt%3B++%26lt%3Btd%26gt%3BAsya+Em.+ve+Hay.+B%C3%BCy.+Am.+Kat。
+++Esnek+EYF%26lt%3B%2Ftd%26gt%3B++%26lt%3Btd%26gt%3B0%2C013884%26lt%3B%2Ftd%26gt%3B++%26lt%3Btd%26gt%3B-0%2C14%26lt%3B%2Ftd%26gt++%26lt%3B%2Ftr%26gt%3B++%26lt%3Btr%3B+++
%26lt%3Btd%26gt%3BAsya+Em.+ve+Hay.+B%C3%BCy.+Ama%C3%A7l%C4%B1+++Gr.+Kat.+Es.+EYF%26lt%3B%2Ftd%26gt%3B++%26lt%3Btd%26gt%3B0%2C013993%26lt%3B%2Ftd%26gt%3B+++
%26lt%3Btd%26gt%3B-0%2C07%26lt%3B%2Ftd%26gt%3B++%26lt%3B%2Ftr%26gt%3B%26lt%3B%2表格%26gt%3B++%28非%3A+分析+i%C3%A7erikleri+fonbul。
com%E2%80%98dan+al%C4%B1nm%C4%B1%C5%9Ft%C4%B1r
</DataContent>
输出应为:
BricÜlkeleri Esnek EYF 0016178-0,52Emeklilik Fonları(BES)-Karma&Esnek Fonlar
安联雅安酒店。 İkinci Esnek EYF 0050458-0,61
. 我喜欢干草。İkinci Standart EYF
0011639-0,16 Vakıf Em。 格丽尔·阿姆。2.Esnek EYF 0020458-0,15
海恩。Em.Kamu Borçlanma AraçlarıStandart EYF 0033045 我的XSL样式表是:
<msxsl:script language="JScript" implements-prefix="user">
function decode(s)
{
var encodedHTML;
var decodedString = decodeURIComponent(s.replace(/\+/g, ' '));
decodedString = decodedString.replace(/&lt;/g,'<');
decodedString = decodedString.replace(/&gt;/g,'>');
decodedString = decodedString.replace(/&amp;/g,'&');
decodedString = decodedString.replace(/&apos;/g,'YY');
decodedString = decodedString.replace(/&quot;/g,'"');
decodedString = decodedString.replace(/&#39;/g,String.fromCharCode(39));
decodedString = decodedString.replace(/<br>/g,'<br/>');
decodedString = '<html>' + decodedString + '</html>';
decodedString = unescape(decodedString)
decodedString = decodedString.replace(/<style([\s\S]*?)<\/style>/gi, '');
decodedString = decodedString.replace(/<script([\s\S]*?)<\/script>/gi, '');
decodedString = decodedString.replace(/<\/div>/ig, '\n');
decodedString = decodedString.replace(/<\/li>/ig, '\n');
decodedString = decodedString.replace(/<li>/ig, ' * ');
decodedString = decodedString.replace(/<\/ul>/ig, '\n');
decodedString = decodedString.replace(/<\/p>/ig, '\n\n');
decodedString = decodedString.replace(/<br\s*[\/]?>/gi, "\n");
decodedString = decodedString.replace(/<[^>]+>/ig, '');
return decodedString;
}
功能解码
{
dhtml;
var decodedString=decodeURIComponent(s.replace(/\+/g');
decodedString=decodedString。替换(/&;lt;/g');
解码字符串=解码字符串。替换(/&;gt;/g');
decodedString=decodedString。替换(/&;amp;/g,“&;”);
decodedString=decodedString.replace(/&apos;/g,'YY');
decodedString=decodedString.replace(/“g”,”);
decodedString=decodedString.replace(/&;39;/g,String.fromCharCode(39));
decodedString=decodedString.replace(/br/g,'br/;');
decodedString='html'+decodedString+'/;html';
decodedString=unescape(decodedString)
decodedString=decodedString.replace(/style([\s\s]*?)\/style/gi',);
decodedString=decodedString.replace(/script([\s\s]*?)\/script/gi',);
decodedString=decodedString.replace(/\/div/ig,'\n');
decodedString=decodedString.replace(/\/li/ig,'\n');
decodedString=decodedString.replace(/li/ig,'*');
decodedString=decodedString.replace(/\/ul/ig,'\n');
decodedString=decodedString.replace(/\/p/ig,'\n\n');
decodedString=decodedString.replace(/br\s*[\/]?/gi,“\n”);
decodedString=decodedString.replace(/[^]+/ig',);
返回解码字符串;
}
解析XML文档时,输出仍然包含“&;“…我需要将其替换为“&”,我缺少什么?。我使用的是XSL 1.0版,转换引擎是MSXML或.Net 1.0尝试将输出方法更改为
文本
如果输出XML,处理器必须转义符号和字符(除非您指示它禁用输出转义).您的输出方法是什么?我的输出方法是XML@michael.hor257k将输出方法更改为文本会起作用,但我想将其输出为XML…@michael.hor257k您显示给我们的输出是文本。而且,正如我所说的,XML不能包含未替换的符号和字符。因此,您想要的对我来说毫无意义。很抱歉,我的回复太晚了……我已经收到了将输出方法也更改为text,但它没有给出我期望的结果,因此我使用了CDATA instea
<msxsl:script language="JScript" implements-prefix="user">
function decode(s)
{
var encodedHTML;
var decodedString = decodeURIComponent(s.replace(/\+/g, ' '));
decodedString = decodedString.replace(/&lt;/g,'<');
decodedString = decodedString.replace(/&gt;/g,'>');
decodedString = decodedString.replace(/&amp;/g,'&');
decodedString = decodedString.replace(/&apos;/g,'YY');
decodedString = decodedString.replace(/&quot;/g,'"');
decodedString = decodedString.replace(/&#39;/g,String.fromCharCode(39));
decodedString = decodedString.replace(/<br>/g,'<br/>');
decodedString = '<html>' + decodedString + '</html>';
decodedString = unescape(decodedString)
decodedString = decodedString.replace(/<style([\s\S]*?)<\/style>/gi, '');
decodedString = decodedString.replace(/<script([\s\S]*?)<\/script>/gi, '');
decodedString = decodedString.replace(/<\/div>/ig, '\n');
decodedString = decodedString.replace(/<\/li>/ig, '\n');
decodedString = decodedString.replace(/<li>/ig, ' * ');
decodedString = decodedString.replace(/<\/ul>/ig, '\n');
decodedString = decodedString.replace(/<\/p>/ig, '\n\n');
decodedString = decodedString.replace(/<br\s*[\/]?>/gi, "\n");
decodedString = decodedString.replace(/<[^>]+>/ig, '');
return decodedString;
}
<xsl:template match="/">
<xsl:value-of select="user:decode(string(//DataContent))" />
</xsl:template>