Android:使用xslt转换xml

我想使用xsl文件转换一些xml并以某种方式输出结果(我使用的是Android Api Level 8)。

我当前的活动看起来像这样,但变换器保持为空。 LogCat抛出一个带有org.apache.harmony.xml.ExpatParser$ParseExceptionSystem.err ,说xml格式不正确,但我确定它是。

我在LogCat中发现了一条提示,说明在上述错误消息之前SystemId Unknown

我究竟做错了什么?

 import java.io.OutputStream; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactoryConfigurationError; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import android.app.Activity; import android.os.Bundle; public class XsltTester extends Activity { private static String TAG = XsltTester.class.getSimpleName(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { Source xmlSource = new StreamSource(this.getResources().openRawResource(R.xml.source)); Source xsltSource = new StreamSource(this.getResources().openRawResource(R.xml.products)); TransformerFactory transFact = TransformerFactory.newInstance(); Transformer trans = transFact.newTransformer(xsltSource); OutputStream output = new StringOutputStream(); StreamResult result = new StreamResult(output); trans.transform(xmlSource, result); } catch (TransformerConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (TransformerFactoryConfigurationError e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (TransformerException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 

这是要转换的xml文件(source.xml)

  <!--  -->   Paul McCartney  Singer Male  

这是相应的xsl(products.xsl)

                    

在这么小的一段代码中确实没有太大的错误空间。 我的猜测是,毕竟XML或XSL是罪魁祸首。 它可能有一个小错字。 你也可以附加XML / XSLT吗?

我刚刚发现了问题所在:我将res / xml中的XML / XSLT文件放在res / raw中,而不是XML格式的结果。

很多关于什么的ado 🙁