我正在 Android 上开发 xslt。
users.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<users>
<user>
<fname>somename</fname>
<hobbies>
<hobby>Movie</hobby>
<hobby>Trekking</hobby>
</hobbies>
</user>
</users>
users.xsl 文件
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="users/user">
<h2>
<xsl:value-of select="fname" />
</h2>
<h3>Hobbies :</h3>
<xsl:for-each select="hobbies/hobby">
<xsl:value-of select="." />
<xsl:if test="position() != last()">
<xsl:text> , </xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
android 布局 userview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView
android:id="@+id/userwebview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
安卓活动
public class UserDisplayActivity extends Activity {
WebView userView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.userwebview);
userView = (WebView) findViewById(R.id.userwebview);
loadTransformedHtml();
}
private void loadTransformedHtml() {
try {
String htmlTransformed=UserXmlTransform.getTransformedHtml();
userView.loadData(htmlTransformed, "text/html", "utf-8");
} catch (TransformerException e) {
e.printStackTrace();
}
}
}
和 UserXmlTransform 类
public class UserXmlTransform {
static final String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath();
static final File xmlFileF = new File(sdPath+"/users.xml");
static final File xsltFileF = new File(sdPath+"/users.xsl");
public static String getTransformedHtml() throws TransformerException {
Source srcXml = new StreamSource(xmlFileF);
Source srcXsl = new StreamSource(xsltFileF);
StringWriter writer = new StringWriter();
Result result = new StreamResult(writer);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(srcXsl);
transformer.transform(srcXml, result);
return writer.toString();
}
}
使用 UserXmlTransform.java 代码成功运行转换,同时使用完全相同的 xml 和 xsl 文件作为 java 项目进行测试。
在 Android 应用程序中,文件位于适当的位置。
但是在运行时 NullPointer 异常被抛出
transformer.transform(srcXml, result);
用户 Xml Transform.java。为什么这个转换器对象在android中变成null。
我不知道出了什么问题。请帮我。
[已添加]我使用的是SDK 2.2