android 中对xml 进行解析

合集下载

AndroidManifest.xml文件详解

AndroidManifest.xml文件详解

AndroidManifest.xml⽂件详解AndroidManifest.xml⽂件详解(⼀)每个应⽤程序在它的根⽬录中都必须要有⼀个AndroidManifest.xml⽂件。

这个清单把应⽤程序的基本信息提交给Android系统,在应⽤程序的代码能够运⾏之前,这个信息系统必须建⽴。

以下是清单⽂件要做的⼀些事情:1. ⽤Java包给应⽤程序命名。

这个包名是应⽤程序的唯⼀标识;2. 描述应⽤程序的组件---组成应⽤程序的Activity、Service、Broadcast Receiver以及Content Provider。

它要⽤每个组件的实现类来命名,并向外发布对应组件功能(例如,组件所能处理的Intent消息)。

这些声明会让Android系统了解应⽤程序中组件,以及这些组件被加载的条件。

3. 判断哪些进程是主应⽤程序组件。

4. 声明应⽤程序所必须的权限,以便能够访问被保护的API,以及能够跟其他应⽤程序进⾏交互。

5. 为了跟应⽤程序组件进⾏交互,还声明了其他要求有的权限。

6. 列出了能够提供应⽤程序运⾏时的分析和其他信息的Instrumentation类。

只有在开发和测试应⽤程序时才在清单⽂件中声明这些类,在应⽤程序被发布之前,要删除这些类。

7. 声明应⽤程序所要求的最⼩的Android API级别。

8. 列出应⽤程序必须链接的外部库。

Manifest⽂件的结构下图中包含了清单⽂件的⼀般性结构,并且包含所有能包含的元素。

每个元素所带有的全部元素会在它们各⾃的⽂档中介绍。

<?xml version="1.0" encoding="utf-8"?>. . .. . .. . .以下按字母顺序列出了清单⽂件中的所有元素,这些元素时Android系统法定元素,不能添加⾃定义的元素或属性。

AndroidManifest.xml⽂件详解(⼆)⽂件约定某些约定和规则普遍适⽤于清单中的所有元素和属性:元素只⽤<manifest>和<application>元素时必须的,⽽且这两个元素在⽂件中只能出现⼀次。

Android利用Document实现xml读取和写入操作

Android利用Document实现xml读取和写入操作

Android利⽤Document实现xml读取和写⼊操作本⽂实例为⼤家分享了利⽤Document实现xml读取和写⼊操作,供⼤家参考,具体内容如下⾸先先来介绍⼀下什么xml?xml是可扩展标记语⾔,他可以⽤来标记数据,定义数据类型。

是⼀种允许⽤户对⾃⼰标记语⾔进⾏定义的源语⾔。

解析XML⽂件的⽅法有很多⽅法:dom解析,就是document以及PULL和SAX⽅法。

今天给⼤家分享⼀下如何⽤Document来操作XML。

效果图:⾸先先对布局⽂件进⾏操作:activity_main.xml:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.oak.d3_xml.MainActivity"><TextViewandroid:id="@+id/tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="⽣成"android:id="@+id/bt_create"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="读取"android:id="@+id/bt_read"/></LinearLayout>主代码:MainActivity.java: 值得注意的是Document类中的包要导W3C的包package com.oak.d3_xml;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;public class MainActivity extends AppCompatActivity {private TextView textView;//⽤于展⽰读取xml的内容private Button bt_create;//⽤于创建xml⽂件private Button bt_read;//⽤于读取xml⽂件private File file;//xml⽂件路径@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);file = new File(getFilesDir(),"languages.xml");//获取到xml⽂件textView = (TextView) findViewById();//拿到textView控件bt_create = (Button) findViewById(R.id.bt_create);//拿到创建按钮bt_read = (Button) findViewById(R.id.bt_read);//拿到读取按钮bt_create.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//这⾥利⽤的是dom对xml进⾏操作的//实例化⼀个DocmentBuilderFactory,调⽤其静态⽅法获取DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();try {//实例化⼀个DocumentBuilderDocumentBuilder builder = builderFactory.newDocumentBuilder();//实例化⼀个xml⽂件Document newxml = builder.newDocument();//创建⼀个根标签Element languages = newxml.createElement("languages");//为其设置属性languages.setAttribute("cat","it");//for循坏3次,分别创建出三个标签,每个标签都包含内容for (int i=0;i<3;i++){//创建languages的⼦标签lanElement lan = newxml.createElement("lan");//设置属性lan.setAttribute("id",i+"");//创建lan的⼦标签Element name = newxml.createElement("name");//设置内容name.setTextContent("Java"+i);//创建lan的⼦标签Element ide = newxml.createElement("ide");//设置内容ide.setTextContent("Eclipse"+i);//将name和ide分别加⼊lan这个标签中lan.appendChild(name);lan.appendChild(ide);//将lan将⼊languages标签中languages.appendChild(lan);}//将languages加⼊到xml⽂件中newxml.appendChild(languages);//实例化Transformer⼯⼚TransformerFactory transformerFactory = TransformerFactory.newInstance();//获取到TransformerTransformer transformer = transformerFactory.newTransformer();//设置输出格式transformer.setOutputProperty("encoding","UTF-8");//设置输出流OutputStream os = new FileOutputStream(file);//将⽂件写出transformer.transform(new DOMSource(newxml),new StreamResult(os));Toast.makeText(getApplicationContext(),"⽣成成功",Toast.LENGTH_SHORT).show(); } catch (ParserConfigurationException e) {e.printStackTrace();} catch (TransformerConfigurationException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (TransformerException e) {e.printStackTrace();}}});bt_read.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//获取到DocumentBuilder的⼯⼚实例化DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();try {//拿到DocumentBuilderDocumentBuilder builder = builderFactory.newDocumentBuilder();//解析xml⽂件Document xml = builder.parse(file);//获取其根标签Element languages = xml.getDocumentElement();//根据⼦标签进⾏查找,返回的是⼀个list集合NodeList list = languages.getElementsByTagName("lan");textView.setText("");//将textView中的内容置空for (int i=0; i<list.getLength(); i++){//获取到⼦标签lanElement lan = (Element) list.item(i);//获取到他的属性String id = lan.getAttribute("id");//获取到他的⼦标签name的内容String name = lan.getElementsByTagName("name").item(0).getTextContent();//获取到他的⼦标签ide的内容String ide = lan.getElementsByTagName("ide").item(0).getTextContent();//显⽰到textView中textView.append(id+"\n"+name+"\n"+ide+"\n");}} catch (ParserConfigurationException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}});}}到这⾥利⽤Document来操作XML⽂件就完成了。

在Android手机应用软件开发中XML的使用技巧

在Android手机应用软件开发中XML的使用技巧

XML的全称是eXtensible Markup Language ,即可扩展标记语言,作为一种广泛推广的数据传输的标准手段,在Ajax设想之初就被确定为XMLHttpRequest传输数据的方式,了解XML技术的本质对于我们更好地运用Ajax也是很有意义的。

对于所熟悉的超文本标记语言,XML也是一种类似的标记语言,不同的是,在HTML的标记是在标准中已经规定了有些什么标记,各种标记代表什么意义,如<p>代表一个段落,它控制着文档在浏览器中应该如何显示;而在XML中,标记以及标记的值是由我们自己定义的,但是,XML不像HTML那样会控制浏览器的显示,它其实只是用来封装数据,并不关心界面的显示如何,实际上我们最后控制界面的显示还是由HTML来控制的,在很长一段时间内我们还是会使用HTML来展示数据,而XML提供了一种可以使页面显示与数据分离的方法,这样为我们面向对象的模块化编程提供了方便。

下面是一段XML文档。

看到我们为文档的根节点定义为person,之下有name、sex、age三个子节点,从这一点可以看出,我们定义了一个XML文档之后,通过对文档标签的自定义,可以得到一个很具结构化并具有一定意义的数据文档,这为我们提供了一种很便捷的方式来包裹和交换数据。

在使用XMLHttpRequest发出请求以后,在服务端可以使程序返回一个XML文档,然后在前端脚本中解析XML,并使用DOM方法改变界面显示。

JSON:它的名字看起来似乎很亲切,全称为JavaScript Object Notation,可以看出它和JavaScript 的关系非常密切。

JSON是一种与JavaScript自然匹配的对象,它实际上是一种名称与值的集合,我们使用JavaScript中通常的对象访问方法就能对对象进行访问。

通过大括号、冒号、逗号、引号等符号实例了一个JSON对象,每个冒号左边的是键,右边是值,JSON 对象实际上就是一个键值对的集合。

利用 XMLPullParser 进行XML 数据解析和处理

利用 XMLPullParser 进行XML 数据解析和处理

利用 XMLPullParser 进行XML 数据解析和处理使用XMLPullParser进行XML数据解析和处理XMLPullParser是一种在Android平台上常用的用于解析和处理XML数据的工具。

它具有快速、高效的特点,能够准确地解析XML 文档,并提供了灵活的API来处理解析结果。

本文将介绍如何利用XMLPullParser进行XML数据解析和处理。

一、XML数据解析的概念和原理XML数据解析是指将XML文档中的数据提取出来并进行处理的过程。

XML文档是一种标记语言,用于描述结构化的数据。

XML数据解析的过程可以分为以下几个步骤:1. 创建XMLPullParser对象:首先,需要创建一个XMLPullParser 对象,用于解析XML文档。

2. 设置输入源:在进行XML数据解析之前,需要设置XMLPullParser的输入源。

输入源可以是一个文件、一个输入流或者一个URL。

3. 解析XML文档:通过调用XMLPullParser对象的相应方法,可以逐行解析XML文档,获取XML文档中的节点信息和数据。

4. 处理解析结果:根据XML数据的结构和需要,可以使用条件语句、循环结构等方式对解析结果进行处理,提取所需的数据,并进行后续的操作。

二、利用XMLPullParser进行XML数据解析的步骤下面逐步介绍如何使用XMLPullParser进行XML数据解析和处理的具体步骤。

步骤1:导入相关的类和包在使用XMLPullParser进行XML数据解析之前,需要导入相应的类和包。

具体的导入语句如下:import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import org.xmlpull.v1.XmlPullParserFactory;import java.io.InputStream;步骤2:创建XMLPullParser对象需要通过XmlPullParserFactory类的newInstance()方法创建XmlPullParserFactory对象,并通过XmlPullParserFactory对象的newPullParser()方法创建XMLPullParser对象,示例代码如下:XmlPullParserFactory factory = XmlPullParserFactory.newInstance();XmlPullParser parser = factory.newPullParser();步骤3:设置输入源设置XMLPullParser对象的输入源,可以是一个输入流、一个文件或者一个URL。

Android SAX 方式解析XML 字符串

Android SAX 方式解析XML 字符串

这个是主类:import java.io.StringReader;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.InputSource;import org.xml.sax.XMLReader;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.widget.TextView;public class ParsingXML extends Activity {private final String MY_DEBUG_TAG = "WeatherForcaster";public void onCreate(Bundle icicle) {super.onCreate(icicle);TextView tv = new TextView(this);String xml = "<VCOM version='1.1'><loginlink>aHR0cDovLzE5Mi4xNjguMTA0LjExMy9ldW1zL2NsaWV udC90ZW1 wbGF0ZTIwMDA vbW9iaWxlZW50cnkucGhwP3VzZXJuYW1lPWNlc2hp</loginlink><errmsg ></errmsg></VCOM>";// 创建一个新的字符串StringReader read = new StringReader(xml);// 创建新的输入源SAX 解析器将使用InputSource 对象来确定如何读取XML 输入InputSource source = new InputSource(read);try {SAXParserFactory spf = SAXParserFactory.newInstance();SAXParser sp = spf.newSAXParser();XMLReader xr = sp.getXMLReader();ExampleHandler myExampleHandler = new ExampleHandler();xr.setContentHandler(myExampleHandler);xr.parse(source);ParsedExampleDataSet parsedExampleDataSet = myExampleHandler.getParsedData();String url=Base64Coder.decodeString(parsedExampleDataSet.toString());tv.setText(url);} catch (Exception e) {tv.setText("Error: " + e.getMessage());Log.e(MY_DEBUG_TAG, "WeatherQueryError", e);}this.setContentView(tv);}}下面两个类是以SPX 方式解析XML字符串import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class ExampleHandler extends DefaultHandler{private boolean in_mytag = false;private ParsedExampleDataSet myParsedExampleDataSet = new ParsedExampleDataSet();public ParsedExampleDataSet getParsedData() {return this.myParsedExampleDataSet;}public void startDocument() throws SAXException {this.myParsedExampleDataSet = new ParsedExampleDataSet();}public void endDocument() throws SAXException {}public void startElement(String namespaceURI, String localName,String qName, Attributes atts) throws SAXException {if (localName.equals("loginlink")) {this.in_mytag = true;}}public void endElement(String namespaceURI, String localName, String qName) throws SAXException {if (localName.equals("loginlink")) {this.in_mytag = false;}}public void characters(char ch[], int start, int length) {if(this.in_mytag){myParsedExampleDataSet.setExtractedString(new String(ch, start, length));}}}public class ParsedExampleDataSet {private String extractedString = null;public String getExtractedString() {return extractedString;}public void setExtractedString(String extractedString) { this.extractedString = extractedString;}public String toString(){return "ExtractedString = " + this.extractedString ;}}。

AndroidXML布局属性详解

AndroidXML布局属性详解

各种Layout用到的一些重要的属性:第一类:属性值为true或falseandroid:layout_centerHrizontal 水平居中android:layout_centerVertical 垂直居中android:layout_centerInparent 相对于父元素完全居中android:layout_alignParentBottom 贴紧父元素的下边缘android:layout_alignParentLeft 贴紧父元素的左边缘android:layout_alignParentRight 贴紧父元素的右边缘android:layout_alignParentTop 贴紧父元素的上边缘android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物第二类:属性值必须为id的引用名“@id/id-name”android:layout_below 在某元素的下方android:layout_above 在某元素的的上方android:layout_toLeftOf 在某元素的左边android:layout_toRightOf 在某元素的右边android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐第三类:属性值为具体的像素值,如30dip,40pxandroid:layout_marginBottom 离某元素底边缘的距离android:layout_marginLeft 离某元素左边缘的距离android:layout_marginRight 离某元素右边缘的距离android:layout_marginTop 离某元素上边缘的距离EditText的android:hint设置EditText为空时输入框内的提示信息。

android android读取资源文件的方法

android android读取资源文件的方法

android android读取资源文件的方法Android开发中,我们经常需要读取应用程序中的资源文件,如图片、文字、xml等。

Android提供了一套API供我们方便地读取这些资源文件。

本文将介绍几种读取资源文件的方法。

一、读取图片资源文件1.通过资源ID读取图片资源在我们的应用程序中,通常会将图片存放在res/drawable文件夹下。

我们可以通过资源ID来获取这些图片。

```ImageView imageView = findViewById(R.id.imageView);imageView.setImageResource(R.drawable.my_image);```其中,R.drawable.my_image是图片资源文件的ID。

通过调用setImageResource方法,我们可以将该资源文件设置给ImageView。

2.通过文件名读取图片资源有时候,我们可能需要根据文件名来读取图片资源。

可以使用以下方法来实现:```String fileName = "my_image.png";Resources resources = getResources();int resId = resources.getIdentifier(fileName, "drawable", getPackageName());imageView.setImageResource(resId);```首先,我们需要获取Resources对象,然后调用getIdentifier方法,传入文件名、资源类型和包名,最后获取到资源ID。

接下来,就可以通过setImageResource方法将资源文件设置给ImageView。

二、读取文字资源文件在应用程序中,我们可能需要读取文字资源文件,如strings.xml。

可以使用以下方法来读取:```String textValue =getResources().getString(R.string.my_text);textView.setText(textValue);```其中,R.string.my_text是文字资源文件的ID。

Android中的动画(XML方式)实践(逐帧动画与补间动画)

Android中的动画(XML方式)实践(逐帧动画与补间动画)

Android中的动画(XML方式)实践(逐帧动画与补间动画)属性动画。

逐帧动画:基于单元格的动画,每一帧显示一个不同的drawable。

一帧一帧的顺序播放。

补间动画:补间动画应用于view,通过对其位置,大小,旋转和透明度的改变,让view动起来。

属性动画:属性动画几乎可以让应用程序中任何对象动起来。

所有补间动画的内容,都可以通过属性动画实现。

下面逐一介绍:注:这篇文章偏重于以xml方式实现相应动画效果。

逐帧动画逐帧动画(Frame-by-frame Animations)从字面上理解就是一帧一帧的播放图片,类似卡通动画。

目标:实现如下图效果:loading步骤:1.在res/drawable目录下新建loading_frame.xml文件:loading_frame.xml根节点是animation-list,内部由一到多个<item>节点组成oneshot属性表示是否只播放一次(true:一次;false:循环播放).item节点声明是一个动画帧,其中 android:drawable属性定义要显示的图像,android:druation代表此帧持续的时间,毫秒为单位。

注:在AndroidStudio中强制规定带animation-list节点xml文件必须放在res/drawable文件下(eclipse(ADT)貌似支持任意放res/drawable和res/anim)。

在androidStudio中若放在res/anim下会报错:错误提示:1错误提示:22.新建页面布局activity_frame.xml:如上图布局很简单上面一个imageview,下面两个button,都水平居中(相对于parent)。

3.新建FrameActivityframeActivity主要逻辑代码当然为了避免animationDrawable带来的内存泄露,建议在onDestroy方法中做如下操作:onDestroy注意:帧数比较多的动画不建议用逐帧动画实现,其一会显得卡顿,其二容易引起OOM。

androidmanifest 解析

androidmanifest 解析

androidmanifest 解析AndroidManifest 解析是指对 Android 应用程序的清单文件(即AndroidManifest.xml)进行解析和理解的过程。

AndroidManifest.xml 是每个Android 应用程序都必须具备的一个文件,它包含了应用程序的核心信息和配置。

在 AndroidManifest 解析的过程中,需要注意以下几个关键要点:1. 应用程序的包名:AndroidManifest.xml 文件中的 package 属性定义了应用程序的包名,它在整个 Android 系统中具有唯一性。

包名在应用的安装、权限控制、组件调用等方面有着重要作用。

2. 应用程序的入口:通过解析 AndroidManifest.xml 中的 <activity> 元素,可以确定应用程序的入口点(即主 Activity)。

主 Activity 是用户与应用交互的第一个界面。

在解析时,需要关注它的属性如 label(应用程序的名称)、icon(应用程序的图标)、intent-filter(Activity 的筛选条件)等。

3. 应用程序的权限:在解析 AndroidManifest.xml 中的 <uses-permission> 元素时,可以获取应用程序所需的权限列表。

Android 应用程序需要获得用户授权才能执行一些敏感操作,如访问网络、读写文件、获取设备信息等。

解析权限是确保应用程序安全运行的重要环节。

4. 应用程序的组件:通过解析AndroidManifest.xml 中的<activity>、<service>、<receiver>、<provider> 元素,可以获取应用程序的各种组件信息。

Activity 表示用户界面的一部分,Service 是后台运行的独立组件,Broadcast Receiver 接收广播消息,Content Provider 提供数据共享。

android常用xml属性

android常用xml属性
horizontal,vertical
TableLayout 的常用 XML 属性及相关方法
XML 属性 android:collapseColumns
android:shrinkColumns
android:stretchColumns
相关方法 setColumnCollapsed(int,boolean)
如果设置为 false,那么 当该组 件被 冻结 时不
会保存它的状态
设置该组件在水平 方向的缩放比 设置该组件在垂直 方向的缩放比 该组件初始化后的 水平滚动偏移 该组件初始化后的 垂直滚动偏移 设置垂直滚动条的
android:scrollbars
android:soundEffectsEnabled setSoundEffectsEnabled(boolean) android:tag
相关方法 setBaselineAligned(boolean)
setDividerDrawable(Drawable) setGravity(int)
说明 该属性设为 false, 将会阻止 该布局 管理器与 它的子 元素的基线对齐 设置垂直 布局时 两个按钮 之间的 分隔条 设置该布 局管理 器内组件 的对齐 方式。该属性支持 top,bottom,left,rig ht,center_vertical,fi
android:translationX android:translationY android:translationZ android:visibility
setTranslationX(float) setTranslationY(float) setTranslationZ(float) setVisibility(int)

XML格式文件的应用与打开方法

XML格式文件的应用与打开方法

XML格式文件的应用与打开方法一、什么是xml格式文件XML是可扩展标记语言(eXtensible Markup Language)的缩写,它是一种用于标记电子文件结构和传输数据的标记语言。

XML文件使用自定义标签来描述数据的结构和含义,可以被用于在不同系统之间进行数据交换和共享。

XML文件可以被解析和处理,使得数据能够被有效地存储、传输和展示。

XML被广泛应用于Web开发、数据交换、配置文件等领域。

二、XML格式文件的应用1. Web开发XML(可扩展标记语言)是用于存储和传输数据的标准标记语言,它与HTML一起被广泛用于创建动态和交互式的网页。

在网页开发中,XML常被用于存储配置信息,如网站的元数据、页面的布局和样式等。

此外,XML还用于在不同系统之间进行数据交换,使得数据能在不同的应用程序和平台上共享和交互。

由于其结构化、灵活性和跨平台性,XML在数据存储和传输领域发挥着不可或缺的作用。

在网页开发中,XML有诸多优势,使得它在数据存储和传输方面成为理想的选择。

首先,XML的结构化特性使得数据易于理解和解析,这对于在不同系统间进行数据交换非常关键。

其次,XML的跨平台性使得数据可以在不同的应用程序和操作系统上共享和交互。

此外,XML还具有灵活性,可以轻松地表示复杂的数据结构,并支持自定义标记,以适应特定应用的需求。

在网页开发中,利用这些优势,XML可以用于存储配置信息、实现数据驱动的动态内容、以及与其他系统进行数据交换等。

通过合理地使用XML,可以提高网页的可维护性、可扩展性和交互性,为创建高性能的网站提供有力支持。

2. 数据交换XML的跨平台性和标准化特性,使其成为不同系统之间进行数据交换的理想选择。

在Web服务中,XML被广泛用于传输数据,使得不同的应用程序能够通过统一的格式进行数据交换。

它能够清晰地表示数据的结构和含义,使得不同系统能够准确解析和解读数据。

此外,XML还可以在不同数据库之间进行数据转换,实现数据的共享和集成。

androidmanifest.xml加载原理

androidmanifest.xml加载原理

androidmanifest.xml加载原理AndroidManifest.xml是Android应用程序的重要配置文件,它包含了应用程序的基本信息和功能描述,包括启动配置、权限请求、组件声明等。

在AndroidManifest.xml中,我们可以声明应用程序中使用的各种组件,如Activity、Service、Receiver、ContentProvider等。

这些组件是应用程序的核心组成部分,它们的加载和运行机制是Android应用程序开发的重要组成部分。

一、组件加载过程AndroidManifest.xml中的组件声明只是应用程序组件加载的必要条件,真正的加载过程涉及到Android系统的多个层次和组件。

1.解析AndroidManifest.xml:Android系统会解析应用程序的AndroidManifest.xml文件,提取出其中的组件信息。

2.组件注册:在解析完AndroidManifest.xml后,系统会根据组件类型和配置,将相应的组件注册到系统服务中。

3.组件启动:当应用程序需要启动某个组件时,系统会根据组件的配置和注册信息,找到对应的组件并启动它。

二、加载原理AndroidManifest.xml中的组件加载原理涉及到多个方面,包括组件类型、配置、启动方式等。

下面我们将详细介绍这些原理。

1.Activity、Service、BroadcastReceiver加载Activity、Service和BroadcastReceiver是Android应用程序中最常用的组件之一。

它们的加载原理大致相同,都是由系统根据配置和注册信息进行查找和启动。

在启动过程中,系统会优先在当前应用程序进程中查找对应的组件,如果找不到,则会到系统服务中查找。

找到后,系统会调用组件的onCreate()方法进行初始化,并返回给应用程序调用者。

2.ContentProvider加载ContentProvider是Android系统中用于共享数据的一种机制,它的加载原理与Activity、Service和BroadcastReceiver略有不同。

Android上使用的XML

Android上使用的XML

Android 是针对移动设备的一种新兴的开源操作系统和SDK。

借助它,您可以创建功能强大的移动应用程序。

当您的应用程序可以访问Web 服务时,其吸引力会大大增加,这意味着您需要使用Web 语言:XML。

在本文中,您将了解在Android 上使用XML 的不同方法,以及如何使用它们构建自己的Android 应用程序。

入门在本文中,您将学习如何构建通过Internet 使用XML 的Android 应用程序。

Android 应用程序是使用Java™编程语言编写的,因此具备Java 技术方面的经验是必需的。

要进行Android 开发,您需要使用Android SDK。

本文中的所有代码适用于任何版本的Android SDK,但SDK 1.5_pre 是用于开发代码的。

您可以使用SDK 和一个文本编辑器来开发Android 应用程序,但使用Android Developer Tools (ADT)(一款Eclipse 插件)会更加简单。

在本文中,我们使用0.9 版本的ADT 和Eclipse 3.4.2, Java 版本。

有关所有这些工具的链接,请参见参考资料。

Android 上的XMLAndroid 平台是一个开源移动开发平台。

它允许您访问各种移动设备的所有方面,这些移动设备从低级图形设备到手机摄像头上的硬件不一而足。

由于Android 可以实现这么丰富的功能,因此您可能想知道为何还要为XML 伤脑筋呢。

并不是因为使用XML 是多么地有趣;而是因为它能提供一些特殊的支持。

XML 经常用作Internet 上的一种数据格式。

如果您希望通过Internet 访问数据,则数据很有可能是XML 格式。

如果您希望发送数据给Web 服务,那么您可能也需要发送XML。

简而言之,如果您的Android 应用程序将利用Internet,那么您可能需要使用XML。

幸运的是,您可以采用多种方法在Android 上使用XML。

4种常见的xml解析方法

4种常见的xml解析方法

查看文章4种常见的xml解析方法2009-11-03 14:40==========================================xml文件<?xml version="1.0" encoding="GB2312"?><RESULT><VALUE><NO>A1234</NO><ADDR>四川省XX县XX镇XX路X段XX号</ADDR></VALUE><VALUE><NO>B1234</NO><ADDR>四川省XX市XX乡XX村XX组</ADDR></VALUE></RESULT>需要什么包自己到网上找下吧?==========================================1)DOM(JAXP Crimson解析器)DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。

DOM是以层次结构组织的节点或信息片断的集合。

这个层次结构允许开发人员在树中寻找特定信息。

分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。

由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。

DOM 以及广义的基于树的处理具有几个优点。

首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。

它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理。

DOM使用起来也要简单得多。

import java.io.*;import java.util.*;import org.w3c.dom.*;import javax.xml.parsers.*;public class MyXMLReader{public static void main(String arge[]){long lasting =System.currentTimeMillis();try{File f=new File("data_10k.xml");DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();DocumentBuilder builder=factory.newDocumentBuilder();Document doc = builder.parse(f);NodeList nl = doc.getElementsByTagName("VALUE");for (int i=0;i<nl.getLength();i++){System.out.print("车牌号码:" +doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue() );System.out.println("车主地址:" +doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue ());}}catch(Exception e){e.printStackTrace();}==========================================2)SAXSAX处理的优点非常类似于流媒体的优点。

XML解析的三种方法

XML解析的三种方法

三种解析XML文件的方法在Android平台上可以使用Simple API for XML(SAX) 、 Document Object Model(DOM)和Android附带的pull解析器解析XML文件。

下面是本例子要解析的XML文件:文件名称:china.xml例子定义了一个javabean用于存放上面解析出来的xml内容,这个javabean为Person,代码:使用SAX读取XML文件SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备。

SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析文档的过程中,SAX会判断当前读到的字符是否合法XML语法中的某部分,如果符合就会触发事件。

所谓事件,其实就是一些回调(callback)方法,这些方法(事件)定义在ContentHandler接口。

下面是一些ContentHandler接口常用的方法:startDocument()当遇到文档的开头的时候,调用这个方法,可以在其中做一些预处理的工作。

endDocument()和上面的方法相对应,当文档结束的时候,调用这个方法,可以在其中做一些善后的工作。

startElement(String namespaceURI, String localName, String qName, Attributes atts) 当读到一个开始标签的时候,会触发这个方法。

namespaceURI就是命名空间,localName 是不带命名空间前缀的标签名,qName是带命名空间前缀的标签名。

通过atts可以得到所有的属性名和相应的值。

要注意的是SAX中一个重要的特点就是它的流式处理,当遇到一个标签的时候,它并不会纪录下以前所碰到的标签,也就是说,在startElement()方法中,所有你所知道的信息,就是标签的名字和属性,至于标签的嵌套结构,上层标签的名字,是否有子元属等等其它与结构相关的信息,都是不得而知的,都需要你的程序来完成。

Android题库

Android题库

1、在android程序中,()用于输出什么级别的日志信息( C )A、调试B、信息C、警告D、错误2、在Activity中需要找到一个id是bookName的的TextView组件,下面哪种语句写法是正确的( C )A、TextView tv =B、TextView tv = (TextView)C、TextView tv = (TextView)D、TextView tv = (TextView)3、如果将一个TextView的android:layout_height属性值设置为wrap_content,那么该组件将是以下哪种显示效果( D )A、该文本域的宽度将填充父容器宽度B、该文本域的宽度仅占据该组件的实际宽度C、该文本域的高度将填充父容器高度&D、该文本域的高度仅占据该组件的实际高度4、给一个TextView设置红色字体,应该使用以下哪种写法( A )A、setTextColor(0xffff0000);B、setColor("0xffff0000")C、setTextColor("0xffff0000")D、setColor("red")5、对于一个Activity,在中对他这样进行定义<intent-filter> <action android:name="" /><category android:name="" /> </intent-filter>,这样的描述代表什么含义(B)'A、无明确含义,每个Activity都需要这样定义B、代表该Activity将作为程序的主Activity,并且在LAUNCHER菜单中启动C、代表该Activity将在桌面上建立图标并启动D、代表该Activity的优先级高于其他的Activity6、在Android应用程序中,图片应放在那个目录下( D )A、rawB、valuesC、layoutD、drawable7、关于文件,以下描述错误的选项有哪些( A )A、在所有的元素中只有<manifest>和<application>是必需的,且只能出现一次B、处于同一层次的元素,不能随意打乱顺序C、元素属性一般都是可选的,但是有些属性是必须设置的%D、对可选的属性,即使不写,也有默认的数值项说明8、如果使用LinearLayout实现组件垂直排列,那么在xml中应添加什么属性进行设置( A )A、android:orientation="vertical"B、android:vertical="true"C、android:orientation="horizontal"D、android:horizontal="true"9、在中描述一个Activity时,该Activity的label属性是指定什么的(B )A、指定该Activity的图标B、指定该Activity的显示标签C、指定该Activity和类相关联的类名D、指定该Activity的唯一标示10、Activity生命周期中,第一个需要执行的方法是什么( B )A、onStartB、onCreateC、onReStartD、onResume11、退出 activity 对一些资源以及状态的操作保存,可以在生命周期的哪个函数中进行(A)】A、onPause()B、onCreate()C、onResume()D、onStart()12、Android 项目工程下面的 assets 目录的作用是什么(B)A、放置应用到的图片资源。

移动平台开发题目和答案

移动平台开发题目和答案

移动平台开发以下是我自己做的答案,绿色的是对的,红色是错的Android智能手机开发概况1.单选题 : Dalvik虚拟机是基于()的架构。

A、栈B、堆C、寄存器D、存储器我的答案:C √2.单选题 : 关于Dalvik虚拟机,说法错误的是().A、基于寄存器的架构B、基于栈的架构C、加载的是.dex格式的数据D、在linux操作系统上运行我的答案:B √3.判断题 : 第四代移动通讯技术(4G)包括TD-LTE和FDD-LTE两种制式。

我的答案:√ √4.判断题 : 随着智能手机的发展,移动通信技术也在不断地升级,目前应用最广泛的是4G我的答案:√ √5.判断题 : Android系统采用分层架构,由高到低分为4层,依次是应用程序层、应用程序框架层、核心类库和Linux内核。

我的答案:√ √6.判断题 : Android是Google公司基于Linux平台开发的手机及平板电脑操作系统我的答案:√ √7.判断题 : Dalvik虚拟机是在linux操作系统上运行.我的答案:√ √8.判断题 : Android系统最初由安迪·鲁宾等人开发制作。

我的答案:√ √9.判断题 : Android是Google公司基于Linux平台开发的手机及平板电脑操作系统。

我的答案:√ √10.判断题 : Android底层是基于linux操作系统的。

我的答案:√ √11.判断题 : 所有的Android应用程序在底层对应同一个Dalvik虚拟机实例,其代码在虚拟机的解析得以执行。

我的答案:× √Android开发环境搭建12.单选题 : 在下列选项中,要通过adb命令查看已连接的设备的是()。

A、adb devicesB、adb show devicesC、adb start devicesD、adb have devices我的答案:A √13.单选题 : 不属于ADTBundle三个重要组成部分的是()A、EclipseB、SDKC、SDK Manager.exeD、ADB我的答案:D √14.单选题 : 在下列选项中,关于DDMS中EmulatorControl功能的说法错误的是()。

Android学习笔记之AndroidManifest.xml文件解析(详解)

Android学习笔记之AndroidManifest.xml文件解析(详解)

Android学习笔记之AndroidManifest.xml⽂件解析(详解)⼀、关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必须的⽂件。

它位于整个项⽬的根⽬录,描述了package中暴露的组件(activities, services, 等等),他们各⾃的实现类,各种能被处理的数据和启动位置。

除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)⼆、AndroidManifest.xml结构<?xmlversion="1.0"encoding="utf-8"?><manifest><application><activity><intent-filter><action/><category/></intent-filter></activity><activity-alias><intent-filter></intent-filter><meta-data/></activity-alias><service><intent-filter></intent-filter><meta-data/></service><receiver><intent-filter></intent-filter><meta-data/></receiver><provider><grant-uri-permission/><meta-data/></provider><uses-library/></application><uses-permission/><permission/><permission-tree/><permission-group/><instrumentation/><uses-sdk/><uses-configuration/><uses-feature/><supports-screens/></manifest>三、各个节点的详细介绍上⾯就是整个am(androidManifest).xml的结构,下⾯以外向内开始阐述~~1、第⼀层(<Manifest>):(属性)A、xmlns:androidB、package指定本应⽤内java主程序包的包名,它也是⼀个应⽤进程的默认名称C、sharedUserIdD、sharedUserLabel⼀个共享的⽤户名,它只有在设置了sharedUserId属性的前提下才会有意义E、versionCode是给设备程序识别版本(升级)⽤的必须是⼀个interger值代表app更新过多少次,⽐如第⼀版⼀般为1,之后若要更新版本就设置为2,3等等。

安卓考试题目及答案

安卓考试题目及答案

一、选择题1.(2分) Android解析xml的方法中,将整个文件加载到内存中进行解析的是?()A、SAXB、PULLC、DOM D 、JSON2.(2分)以下属于调用摄像头硬件的权限的是:()A.<uses-permission android:name="android.permission.CAMERA"/>B.<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>C.<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>D.<uses-permission android:name="android.permission.INTERNET"/>3.(2分) 使用Android系统进行拍照用到的类有:()A. SurfaceViewB. SurfaceHolderC.CallbackD. Camera4.(2分)在AsyncTask中下列哪个方法是负责执行那些很耗时的后台计算工作的()A,run B,execute C,doInBackground D,onPostExecute5.(2分)如果希望自定义TabHost标题部分的显示内容需要使用下列哪个方法()final TabHost tabHost = getTabHost();A,tabHost.addTab(tabHost.newTabSpec("tab1")B,setIndicatorC,setContent();D,setView6.(2分)使用HttpURLConnection的Get方式请求数据时,下列哪个属性是必须设置的()A,connection.setDoOutput(true)B,connection.connect()C,connection.setRequestMethod("POST")D,connection.setDoInput(true)7.(2分)假设assets目录下有文件结构html/hello.html,用loadUrl()方法将该网页加载至webView时,需传入的参数是(B)A, file:///asset/html/hello.htmlB,file:///android_asset/html/hello.htmlC,file:///androidasset/hello.htmlD,file:///assets/html/hello.html8.(2分) 关于ImageSwitcher 说法错误的是:()A.ImageSwitcher里可以通过Alpha设定转换时候的透明位B.在使用一个ImageSwitcher之前,不一定要调用setFactory方法C.setInAnimation是设置资源被读入到这个ImageSwitcher的时候动画效果D.setOutAnimation是资源文件从这个ImageSwitcher里消失的时候要实现的动画效果9.(2分) android中文件操作模式中表示只能被本应用使用,写入文件会覆盖的是____A, MODE_APPEND B,MODE_WORLD_READABLEC,MODE_WORLD_WRITEABLE D, MODE_PRIVATE10.(2分)对于AlertDialog的描述不正确的是_____A,使用new关键字创建AlertDialog的实例B,对话框的显示需要调用show方法C,setPositiveButton方法是用来加确定按钮的D,setNegativeButton方法是用来加取消按钮的11.(2分)Android 项目工程下面的assets 目录的作用是什么A、放置应用到的图片资源。

基础测试答案

基础测试答案

基础测试答案1.android底层是基于什么操作系统()a、 javab、macosc、windowsd、linux2.android开发环境中ddms是dalvikdebugmonitorservice,下面关于它为我们提供的功能,描述错误的是()a、 Logcat显示输出调试信息B.模拟电话呼叫C.接收短信d.显示模拟器启动信息,加载程序等信息3.安装和配置Android开发环境时需要使用的eclipse插件有()a、jdkb、eclipseC、Android sdkd和Android ADT4.android下的单元测试要配置,以下说法正确的是()a、必须导入junit的jar包b、在Android manifest Instrumentationc中,它是在XML的manifest节点下配置的,而Android manifest。

XML中的XML,在应用程序节点和Android清单下配置instrumented。

在XML中的应用程序节点下配置的uses库和测试类需要继承Android testcase类5.android项目中的布局文件放在哪个目录下()a、res/layoutb、res/valuec、assetsd、res/drawable6.在Android应用程序中可以使用哪些方法存储数据(a、文件B、SQLite)c、sharedpreferenced、contentprovider7.要通过ADB命令查看连接的设备,正确的设备包括()a、adbdeviceb、adbshowdevicesc、adbstartdevicesd和adbhavedevices8关于的说法下列正确的是()a,在gridview里面表示一行b,是五种布局的一种c、标签D表示表格布局中的一行和listview中的一行9.androidlog.w()-1-a、调试b、信息c、警告d、错误10.使用pull解析器时,包括哪些事件类型:A和end_uuDocumentB、start_uuuElementC、start_uuuTagd、texte、attributef、end_text11.在Android解析XML的方法中,将整个文件加载到内存进行解析的方法是什么?a、saxb、pullc、domd、json12.在android中对数据库的表进行查询操作用sqlitedatabase类中的那两个方法进行查询:a、 Insert()和rawquery()b.query()和execsql()c.query()和rawquery ()d.query()和update()13.关于sqlite数据库,不正确的说法a、 Sqliteopenhelper类主要用于创建和更新数据库。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DOM解析器是通过将XML文档解析成树状模型并将其放入内存来完成解析工作的,而后对文档的操作都是在这个树状模型上完成的。

这个在内存中的文档树将是文档实际大小的几倍。

这样做的好处是结构清除、操作方便,而带来的麻烦就是极其耗费系统资源。

而SAX正好克服了DOM的缺点,分析能够立即开始,而不是等待所有的数据被处理。

而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中,这对于大型文档来说是个巨大的优点。

事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。

选择DOM 还是选择SAX,这取决于下面几个因素:应用程序的目的:如果打算对数据作出更改并将它输出为XML,那么在大多数情况下,DOM 是适当的选择。

并不是说使用SAX 就不能更改数据,但是该过程要复杂得多,因为您必须对数据的一份拷贝而不是对数据本身作出更改。

数据容量:对于大型文件,SAX 是更好的选择。

数据将如何使用:如果只有数据中的少量部分会被使用,那么使用SAX 来将该部分数据提取到应用程序中可能更好。

另一方面,如果您知道自己以后会回头引用已处理过的大量信息,那么SAX 也许不是恰当的选择。

对速度的需要:SAX 实现通常要比DOM 实现更快。

基于上面的分析,在基于Android系统的内存和CPU资源比较有限的手持设备上,只要我们不需要修改XML数据或者随机的访问XML数据,SAX尽管可能需要更多的编码工作,但是为了更小的内存和CPU 消耗,还是值得的。

另外,Android SDK中已经包含了JAXP对应的javax.xml.parsers包,和SAX对应org.xml.sax(当然DOM对应的org.w3c.dom包也包含在内),加上Android还提供了android.sax这样的包来方便SAX Handle的开发,基于JAXP和SAX这样的标准方法来开发不仅复杂度不高,即使出现问题在讨论组中寻求解决方案也是比较容易的。

android 中的xml解析应该是和java中一条道路主要分为sax 解析和的Dom 解析。

如下的介绍的相关的包和类均为android 环境下:sax解析对应为:org\xml\sax 包:xml解析javax.xml.parsers.SAXParserFactoryjavax.xml.parsers.SAXParser两个主要用于SAXParser的上下文建立示例如下:SAXParserFactory factory = SAXParserFactory.newInstance();SAXParser parser = factory.newSAXParser();ParseXML parX = new ParseXML();parser.parse("F:\\emps.xml", parX);这里的ParseXML 一般是继承于org.xml.sax.helpers.DefaultHandler类的解析实现。

因为Sax 对xml的解析是基于事件类型的,也就是Sax Parser逐步的读取xml文件,然后碰到一个节点,一个属性,碰到一个节点的结束等事件都会回调哦org.xml.sax.helpers.DefaultHandler 之类的实现,然后在Hander 的实现中具体解析各个节点名称,属性名称。

通过以上的特点可以看出sax有速度快(不需要全部的读入内存并构建树),消耗的内存较少,线性的从上往下解析,所以它比较的适合于xml文件大,速度要求高,解析结构自上而下如把html展示出来,xml转为html等。

Dom解析对应为:org\w3c\dom包:xml的各个元素对应类javax.xml.parsers.DocumentBuilderFactoryjavax.xml.parsers.DocumentBuilder结构也和sax 一样,最终的解析目标指向org.w3c.dom.Document.示例如下:File docFile = new File("orders.xml");Document doc = null;DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();DocumentBuilder db = dbf.newDocumentBuilder();doc = db.parse(docFile); // get the document.因为Dom 是基于树结构,所以要全部结构内容读入内容,构造树,所以比较花费时间,但是dom 的操作可以反复的来回操作,灵活性比较高,做出的程序结构也比较容易认可,对于那些性能要求不是很高的,内容比较少的,xml上下结构比较复杂的用dom应该是比较好的选择了。

因为在开发中,我们会常用到xml文件的读写操作,因为手机操作有很多版本问题和很多小数据在数据库不是良好的解决方案。

所以会用到很多xml操作。

android开发一般对xml操作常用三种技术:sax、dom、pull分别详细的进行介绍:首先创建开发测试坏境(一下三种方法都会使用这个环境):在类路径下面创建xml文件:person.xml<?xml version="1.0" encoding="UTF-8"?><persons><person id="1"><name>王昌龙</name><age>23</age></person><person id="3"><name>小妾</name><age>17</age></person></persons>(我的名字and因为没有媳妇,就假设叫小妾)针对person创建javabean,(因为我们下面要以对象的形式获取此xml文件内容)package cn.partner4java.xml.bean;public class Person {private int id;private String name;private short age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public short getAge() {return age;}public void setAge(short age) {this.age = age;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + id;return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Person other = (Person) obj;if (id != other.id)return false;return true;}}sax:SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备。

SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析文档的过程中,SAX会判断当前读到的字符是否合法XML语法中的某部分,如果符合就会触发事件。

所谓事件,其实就是一些回调(callback)方法,这些方法(事件)定义在ContentHandler接口。

下面是一些ContentHandler接口常用的方法:startDocument()当遇到文档的开头的时候,调用这个方法,可以在其中做一些预处理的工作。

endDocument()和上面的方法相对应,当文档结束的时候,调用这个方法,可以在其中做一些善后的工作。

startElement(String namespaceURI, String localName, String qName, Attributes atts)当读到一个开始标签的时候,会触发这个方法。

namespaceURI就是命名空间,localName 是不带命名空间前缀的标签名,qName是带命名空间前缀的标签名。

通过atts可以得到所有的属性名和相应的值。

要注意的是SAX中一个重要的特点就是它的流式处理,当遇到一个标签的时候,它并不会纪录下以前所碰到的标签,也就是说,在startElement()方法中,所有你所知道的信息,就是标签的名字和属性,至于标签的嵌套结构,上层标签的名字,是否有子元属等等其它与结构相关的信息,都是不得而知的,都需要你的程序来完成。

这使得SAX 在编程处理上没有DOM来得那么方便。

endElement(String uri, String localName, String name)这个方法和上面的方法相对应,在遇到结束标签的时候,调用这个方法。

characters(char[] ch, int start, int length)这个方法用来处理在XML文件中读到的内容,第一个参数为文件的字符串内容,后面两个参数是读到的字符串在这个数组中的起始位置和长度,使用new String(ch,start,length)就可以获取内容。

不知道你看懂上面的解释了么?那好,我们动手做一下:创建XMLContentHandler,如上面说的应该实现ContentHandler接口,但是我们这里去集成一个它的实现类就OL,package cn.partner4java.sax.service;import java.util.ArrayList;import java.util.List;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;import cn.partner4java.sax.bean.Person;public class XMLContentHandler extends DefaultHandler {private List<Person> persons;private Person person;private String preTag;public List<Person> getPersons() {return persons;}//这个方法用来处理在XML文件中读到的内容,第一个参数为文件的字符串内容,后面两个参数是读到的字符串在这个数组中的起始位置和长度,//使用new String(ch,start,length)就可以获取内容。

相关文档
最新文档