Я работаю над проектом Android (2.2), который нуждается в преобразовании xsl. Приведенный ниже код прекрасно работает в обычном не Android-проекте Java
public static String transform() throws TransformerException {
Source xmlInput = new StreamSource(new File("samplexml.xml"));
Source xslInput = new StreamSource(new File("samplexslt.xslt"));
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(xslInput);
OutputStream baos = new ByteArrayOutputStream();
Result result = new StreamResult(baos);
transformer.transform(xmlInput, result);
return baos.toString();
}
Мне нужен аналогичный функционал на Android. Для этого я создал 2 файла в ресурсах / raw:
- samplexml.xml
- samplexslt.xslt
(содержимое этих файлов взято с здесь .
Я попробовал приведенный ниже код, и он не работает (обратите внимание на конструктор StreamSource arg):
public static String transform() throws TransformerException {
TransformerFactory factory = TransformerFactory.newInstance();
Source xmlInput = new StreamSource(this.getResources().openRawResource(R.raw.samplexml));
Source xslInput = new StreamSource(this.getResources().openRawResource(R.raw.samplexslt));
Transformer transformer = factory.newTransformer(xslInput);//NullPointerException here
OutputStream baos = new ByteArrayOutputStream();
Result result = new StreamResult(baos);
transformer.transform(xmlInput, result);
}
Я видел спецификацию и считаю, что мне нужно установить системный идентификатор. Но я не мог заставить вышеуказанный код работать.
Итак, в проекте Android, как обрабатывать преобразования xslt? Пожалуйста, выскажите ваши мысли.