我在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>
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(); } } }
和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(); }}
在使用完全相同的xml和xsl文件作为Java项目进行测试时,可以使用UserXmltransform.java代码成功运行该转换.
在androID应用中,文件位于适当的位置.
但是在运行NullPointer时会抛出异常
transformer.transform(srcXml, result);
UserXmltransform.java.为什么这个转换器对象在androID中变为null.
我不知道是什么问题.请帮我.
[添加]我正在使用SDK 2.2
解决方法:
我在users.xsl中做了以下更改:
<xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/transform">
至
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/transform" version="1.0">
问题解决了.
但是仍然不知道为什么这会导致错误.
总结以上是内存溢出为你收集整理的Android XSL转换为空指针,但可在桌面上使用全部内容,希望文章能够帮你解决Android XSL转换为空指针,但可在桌面上使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)