0
我在android上使用xslt。 Users.xml文件:Android xsl轉換空指針,但在桌面上工作
<?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>
Android的活動
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();
}
}
}
而且UserXmlTran sform類
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代碼運行,而測試,Java項目具有完全相同的XML和XSL文件。
在Android應用程序中,文件位於適當的位置。 但在運行空指針異常在行
transformer.transform(srcXml, result);
UserXmlTransform.java的
拋出。爲什麼這個變換器對象在android中變爲null。
我找不出什麼問題。請幫幫我。 [新增]我使用的SDK 2.2
您的變壓器爲空。我會建議在調試器中運行它,並將模擬器上的行爲與本機版本的行爲進行比較。 –
我用掃描儀打印xml和xsl文件的內容。一切都好。但是這一行:變壓器變壓器= tFactory.newTransformer(srcXsl);對變換器對象返回null。 – gtiwari333
也許這會有幫助嗎?也許Transformer類缺少你的Android SDK? http://stackoverflow.com/questions/5533280/creating-an-xml-document-in-android –