安卓如何读取自定义XML文件里的任意数据

安卓如何读取自定义XML文件里的任意数据,第1张

在程序升级的时候,每更新一个版本都要写升级日志,将升级日志放在xml文件中,通过代码来读取是一个较好的方案。

关键类:Resources

关键方法:public int getIdentifier(String name, String defType, String defPackage)

关于具体使用方法,举例如下:

1、updatelogxml文件位于res/xml/文件夹下:

<xml version="10" encoding="utf-8">

<updatelog>

<release

version="10"

versioncode="11">

<log>1、这个文件在res/xml文件夹下;</log>

<log>2、这个文件的名字是“updatelogxml”</log>

<log>3、这是一个xml文件</log>

</release>

</updatelog>

2、在代码中调用方法如下:

public class ResourcesActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView( Rlayoutresources_layout );

mTextView = ( TextView )findViewById( RidtextId );

getFileResources( );

}

private void getFileResources( ){

String packageName = getPackageName( );

try {

Resources resources = thisgetPackageManager( )getResourcesForApplication( packageName );

int resId = resourcesgetIdentifier( "updatelog", "xml", packageName );

String log = getUpdatelog( resId, resources );

int appId = resourcesgetIdentifier( "action_settings", "string", packageName );

String appName = resourcesgetString( appId );

mTextViewsetText( appName + "\n" + log );

} catch (NameNotFoundException e) {

eprintStackTrace();

}

}

private String parseTag( XmlResourceParser xml ) throws XmlPullParserException, IOException {

String result = "Version: "+ xmlgetAttributeValue(null, "version") + "\n" + "VersionCode: " + xmlgetAttributeValue(null, "versioncode") + "\n";

int eventType = xmlgetEventType( );

while( ( eventType != XmlPullParserEND_TAG ) || ( xmlgetName( )equals( "log" ) ) ) {

if( (eventType == XmlPullParserSTART_TAG) && ( xmlgetName( )equals( "log" ) ) ) {

eventType = xmlnext( );

result = result + xmlgetText( ) + "\n";

}

eventType = xmlnext( );

}

return result;

}

private String getUpdatelog( int resourceId, Resources resource ) {

String result = "";

XmlResourceParser xmlResParser = resourcegetXml( resourceId );

try {

int eventType = xmlResParsergetEventType( );

while ( eventType != XmlPullParserEND_DOCUMENT ) {

if ( ( eventType == XmlPullParserSTART_TAG ) && ( xmlResParsergetName( )equals( "release" ) ) ) {

result = result + parseTag( xmlResParser );

}

eventType = xmlResParsernext( );

}

} catch (XmlPullParserException e) {

Systemoutprintln( egetMessage( ) );

} catch (IOException e) {

Systemoutprintln( egetMessage( ) );

} finally {

xmlResParserclose( );

}

return result;

}

private TextView mTextView = null;

}

生成布局的时候,经常会用到LayoutInflaterfrom(context)inflate(layoutRes, parent, false)方法,一直不知其具体实现以及各参数作用,靠猜来实现

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10074681.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存