сначала я загружаю файлы xml и xsl в res / raw, и я хотел бы преобразовать файлы XSL в HTML, используя XSLT в студии android, у меня есть код Java в «MainActivity», но после запуска он показывает мнепросторная страница.я не знаю, должен ли я поместить его в другой класс java и просто вызвать его в «MainActivity», так что вы можете мне помочь, пожалуйста?
public class MainActivity extends AppCompatActivity {
/* @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}*/
public class LoadXSLTinWebview extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_PROGRESS);
WebView webview = new WebView(this);
setContentView(webview);
//Reading XSLT
String strXSLT = GetStyleSheet(R.raw.cinemaxsl);
//Reading XML
String strXML = GetStyleSheet(R.raw.cinemaxml);
/*
* Loading XSLT...
*/
//Transform ...
String html=StaticTransform(strXSLT, strXML);
//Loading the above transformed CSLT in to Webview...
webview.loadData(html,"text/html",null);
}
/*
* Transform XSLT to HTML string
*/
public String StaticTransform(String strXsl, String strXml) {
String html = "";
try {
InputStream ds = null;
ds = new ByteArrayInputStream(strXml.getBytes("UTF-8"));
Source xmlSource = new StreamSource(ds);
InputStream xs = new
ByteArrayInputStream(strXsl.getBytes("UTF-8"));
Source xsltSource = new StreamSource(xs);
StringWriter writer = new StringWriter();
Result result = new StreamResult(writer);
TransformerFactory tFactory =
TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(xsltSource);
transformer.transform(xmlSource, result);
html = writer.toString();
ds.close();
xs.close();
xmlSource = null;
xsltSource = null;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerFactoryConfigurationError e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return html;
}
/*
* Read file from res/raw...
*/
private String GetStyleSheet(int fileId) {
String strXsl = null;
InputStream raw = getResources().openRawResource(fileId);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int size = 0;
// Read the entire resource into a local byte buffer.
byte[] buffer = new byte[1024];
try {
while ((size = raw.read(buffer, 0, 1024)) >= 0) {
outputStream.write(buffer, 0, size);
}
raw.close();
strXsl = outputStream.toString();
Log.v("Log", "xsl ==> " + strXsl);
} catch (IOException e) {
e.printStackTrace();
}
return strXsl;
}
}
}