Я хочу, чтобы запустить преобразование XSLT на документ XML, который находится в LATIN2 кодировке XML-док выглядит следующим образом:Невозможно сделать преобразование XSLT на LATIN2 XML документ
<?xml version="1.0" encoding="ISO-8859-2"?>
<Cégjegyzék>
<Kiadmány>
<CégAdatlap>...</CégAdatlap>
<CégAdatlap>...</CégAdatlap>
<CégAdatlap>...</CégAdatlap>
</Kiadmány>
</Cégjegyzék>
Мой XSLT пытается итерации через эти элементы.
<results>
<xsl:for-each select="//Cégjegyzék/Kiadmány/CégAdatlap" >
...
</xsl:for-each>
</results>
Однако выход всегда будет выглядеть следующим образом
<?xml version="1.0" encoding="UTF-8"?><results/>
Я имею в виду, что XPath не работает из-за проблем кодирования, поэтому я попытался преобразовать в utf8, как это
byte[] latin2 = xml.getBytes("ISO-8859-2");
byte[] utf8 = new String(latin2, "ISO-8859-2").getBytes("UTF-8");
String utf8String = new String(utf8);
utf8String = utf8String.replace("ISO-8859-2","UTF-8");
return utf8String;
К сожалению, это не помогло.
Кто-нибудь знает, в чем проблема и как я могу это исправить?
кода для инициирования превращения:
TransformerFactory tf = TransformerFactory.newInstance();
File f = new File(searchProviderXslt.getXsltFilename());
StreamSource ss = new StreamSource(f);
Transformer transformer = tf.newTransformer(ss);
//String response = convert_response((String) resp, sc);
String response = (String) resp;
Source xml = new StreamSource((new StringReader(response)));
StreamResult xmlres = new StreamResult(new StringWriter());
transformer.transform(xml, xmlres);
String xmls = xmlres.getWriter().toString();
http://xsltransform.net/bFWR5Ep, кажется, выводит три точки для каждого элемента ввода, поэтому проблема заключается в остальной части кода, который вы не показывали, как минимальный, но полный XSLT и, конечно же, Java код, выполняющий преобразование. –
ОК интересно, спасибо! –
Я бы удалил все это «конверсионный» код. Строка Java всегда кодируется в кодировке UTF-16. Преобразуя его в байты и обратно в строку, особенно без кодировки (что и делает «новая строка» (utf8) », скорее всего, приведет к повреждению персонажей и ухудшит ситуацию. – VGR