第一步:新建一个Android工程,命名为XmlDemo.
第二步:修改main.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"
>
<Button
android:id="@+id/btn1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="创建XML文件"
/>
<Button
android:id="@+id/btn2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="DOM解析XML"
/>
<Button
android:id="@+id/btn3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="XmlPullParse解析XML"
/>
<TextView
android:id="@+id/result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
第三步:修改主核心程序XmlDemo.java,代码如下:
public class WriteXML extends Activity implements OnClickListener{
private static final String BOOKS_PATH = "/sdcard/books2.xml";
private Button mButton1,mButton2,mButton3;
private TextView mTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setupViews();
}
//初始化工作
private void setupViews(){
mTextView = (TextView)findViewById(R.id.result);
mButton1 = (Button)findViewById(R.id.btn1);
mButton2 = (Button)findViewById(R.id.btn2);
mButton3 = (Button)findViewById(R.id.btn3);
mButton1.setOnClickListener(this);
mButton2.setOnClickListener(this);
mButton3.setOnClickListener(this);
}
//创建xml文件
private void createXmlFile(){
File linceseFile = new File(BOOKS_PATH);
try{
linceseFile.createNewFile();
}catch (IOException e) {
Log.e("IOException", "exception in createNewFile() method");
}
FileOutputStream fileos = null;
try{
fileos = new FileOutputStream(linceseFile);
}catch (FileNotFoundException e) {
Log.e("FileNotFoundException", "can't create FileOutputStream");
}
XmlSerializer serializer = Xml.newSerializer();
try {
serializer.setOutput(fileos,"UTF-8");
serializer.startDocument(null, true);
serializer.startTag(null, "books");
for(int i = 0; i < 3; i ++){
serializer.startTag(null, "book");
serializer.startTag(null, "bookname");
serializer.text("Android教程" + i);
serializer.endTag(null, "bookname");
serializer.startTag(null, "bookauthor");
serializer.text("Frankie" + i);
serializer.endTag(null, "bookauthor");
serializer.endTag(null, "book");
}
serializer.endTag(null, "books");
serializer.endDocument();
serializer.flush();
fileos.close();
} catch (Exception e) {
Log.e("Exception","error occurred while creating xml file");
}
Toast.makeText(getApplicationContext(), "创建xml文件成功!", Toast.LENGTH_SHORT).show();
}
//dom解析xml文件
private void domParseXML(){
File file = new File(BOOKS_PATH);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
Document doc = null;
try {
doc = db.parse(file);
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Element root = doc.getDocumentElement();
NodeList books = root.getElementsByTagName("book");
String res = "本结果是通过dom解析:" + "\n";
for(int i = 0; i < books.getLength();i++){
Element book = (Element)books.item(i);
Element bookname = (Element)book.getElementsByTagName("bookname").item(0);
Element bookauthor = (Element)book.getElementsByTagName("bookauthor").item(0);
res += "书名: " + bookname.getFirstChild().getNodeValue() + " " +
"作者: " + bookauthor.getFirstChild().getNodeValue() + "\n";
}
mTextView.setText(res);
}
//xmlPullParser解析xml文件
private void xmlPullParseXML(){
String res = "本结果是通过XmlPullParse解析:" + "\n";
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser = factory.newPullParser();
xmlPullParser.setInput(Thread.currentThread().getContextClassLoader()
.getResourceAsStream(BOOKS_PATH), "UTF-8");
int eventType = xmlPullParser.getEventType();
try{
while (eventType != XmlPullParser.END_DOCUMENT) {
String nodeName = xmlPullParser.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if("bookname".equals(nodeName)){
res += "书名: " + xmlPullParser.nextText() + " ";
}else if("bookauthor".equals(nodeName)){
res += "作者: " + xmlPullParser.nextText() + "\n";
}
break;
default:
break;
}
eventType = xmlPullParser.next();
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (XmlPullParserException e) {
e.printStackTrace();
}
mTextView.setText(res);
}
//按钮事件响应
public void onClick(View v) {
if(v == mButton1){
createXmlFile();
}else if(v == mButton2){
domParseXML();
}else if(v == mButton3){
xmlPullParseXML();
}
}
}
第四步:由于我们在Sd卡上新建了文件,需要增加权限,如下代码(第16行):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tutor.xml"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".XmlDemo"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
注意:模拟器要建一个SD卡,否则出错。
books.xml内容如下:
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<books>
<book>
<bookname>Android教程0</bookname>
<bookauthor>Frankie0</bookauthor>
</book>
<book>
<bookname>Android教程1</bookname>
<bookauthor>Frankie1</bookauthor>
</book>
<book>
<bookname>Android教程2</bookname>
<bookauthor>Frankie2</bookauthor>
</book>
</books>
- 大小: 39.9 KB
- 大小: 37.4 KB
分享到:
相关推荐
本文将深入探讨如何在Android中使用PULL解析器(Pull Parser)来解析XML文档,这是一种轻量级且高效的解析方式。 **PULL解析器概述** PULL解析器(Pull Parsing)是一种事件驱动的解析模型,它不需要完整的XML文档...
Android提供了多种解析XML的方式,主要包括以下几种: 1. **DOM解析器**:Document Object Model(DOM)解析器将整个XML文件加载到内存中,形成一个树形结构,便于对整个文档进行遍历。但是,对于大型XML文件,DOM...
本篇文章将深入探讨三种在Android中解析XML的方法:DOM(文档对象模型)、Pull(拉取解析器)和SAX(简单API for XML),并且会特别强调如何识别文件编码。 首先,DOM解析是将整个XML文件加载到内存中形成一个树形...
这篇博文将深入探讨Android中的XML解析机制,包括DOM、SAX和Pull解析器三种主要方法。 首先,我们来看DOM解析。DOM(Document Object Model)是一种将XML文档加载到内存中并创建一个树形结构的方法。通过DOM解析,...
### Android中XML属性与解析深度解析 #### 一、引言 在Android开发中,XML文件扮演着至关重要的角色,特别是在界面布局设计方面。通过理解并掌握XML的基本属性及其解析方法,开发者能够更加高效地创建出美观且功能...
"Android pull解析xml源码"这个主题聚焦于使用Android的XML Pull解析器来理解和操作XML文档。Pull解析器是一种事件驱动的解析方法,与DOM(Document Object Model)和SAX(Simple API for XML)不同,它不需要将整个...
总的来说,理解如何从assets文件夹读取和解析XML是Android开发中的一个重要技能。它能帮助开发者灵活地处理非标准资源,提高应用的可扩展性和灵活性。通过实践这个示例,开发者可以学习到如何在实际项目中应用Pull...
在SAX接口中,事件源是org.xml.sax包中的XMLReader,它通过parser()方法来解析XML文档,并产生事件。事件处理器是org.xml.sax包中ContentHander、DTDHander、ErrorHandler,以及EntityResolver这4个接口....
在Android中,使用SAX解析XML文件通常涉及以下几个步骤: 1. 创建SAX解析器工厂:首先,需要创建一个`SAXParserFactory`实例,这是通过调用`SAXParserFactory.newInstance()`方法实现的。这个工厂类用于生成`...
下面将详细介绍Android中XML解析的几种主要方法及其应用。 1. DOM解析器(Document Object Model) DOM解析器一次性加载整个XML文档到内存中,形成一个树形结构,可以方便地遍历和访问每个节点。这种方式适合小规模...
以下是对XML解析在Android中的应用及几种常见方法的详细说明: 1. DOM解析器(Document Object Model): DOM解析器将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点遍历访问XML内容。虽然DOM解析...
本资料“比较通用的xml解析方法”探讨了在Android中解析XML的几种常见方法。 1. DOM解析器: DOM(Document Object Model)是XML文档的树形结构表示。它一次性加载整个XML文档到内存中,形成一个完整的树形结构,...
JSON解析在Android中通常有以下几种方式: 1. **Gson库**:Google提供的Gson库能将Java对象直接转换为JSON字符串,反之亦然。使用Gson非常方便,例如: ```java Gson gson = new Gson(); MyObject obj = new My...
总结,SAX解析XML在Android中主要涉及以下几个步骤:创建`ContentHandler`子类,实现事件处理方法,创建`SAXParserFactory`和`SAXParser`,并调用`parse`方法解析XML文件。这种解析方式适用于处理大体积的XML文件,...
在Android中,有两种主要的XML解析方法:DOM(Document Object Model)解析和SAX(Simple API for XML)解析。 - DOM解析:DOM解析器将整个XML文档加载到内存中,创建一个树形结构,允许开发者通过节点遍历来访问...
在Android中,`org.w3c.dom`包提供了DOM解析的相关类,如`DocumentBuilderFactory`用于创建`DocumentBuilder`,进而解析XML文件。 2. SAX(Simple API for XML)解析: SAX是一种事件驱动的解析方法,不将整个XML...
本文详细探讨了在Android平台上解析XML文件的几种主流技术:DOM(Document Object Model)、SAX(Simple API for XML)及XMLPull。通过对这些技术的具体实现过程进行阐述,并结合实际案例,对比分析了它们在处理不同...
在Android中,XML文件主要有以下几种类型: 1. **布局文件**:XML文件用于定义用户界面的布局,如`activity_main.xml`。它包含了各种视图组件(如TextView、ImageView、Button等)及其布局属性,如宽度、高度、对齐...
本文将深入探讨Android中解析XML的三种主要方法:DOM、SAX和PULL解析器。 1. DOM(Document Object Model)解析: DOM解析器将整个XML文档加载到内存中,创建一个树形结构,称为DOM树。每个XML元素、属性、文本等都...