Android中生成XML总结

来源:互联网 发布:行政审批系统网络平台 编辑:程序博客网 时间:2024/06/05 05:48

前言:

本章节主要是讲述如何生成XML格式的文件

1>XML实例

XML 文档使用简单的具有自我描述性的语法:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

第一行是 XML 声明。它定义 XML 的版本(1.0)和所使用的编码(ISO-8859-1 = Latin-1/西欧字符集)。

下一行描述文档的根元素(像在说:"本文档是一个便签"):

<note>

接下来 4 行描述根的 4 个子元素(to, from, heading 以及 body):

<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>

最后一行定义根元素的结尾:

</note>

2>XML元素

XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。

一个元素可以包含:

  • 其他元素
  • 文本
  • 属性
  • 或混合以上所有...
<bookstore>
<book category="CHILDREN">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>

在上面的实例中,<bookstore> 和 <book> 都有 元素内容,因为他们包含其他元素。<book> 元素也有属性(category="CHILDREN")。<title>、<author>、<year> 和 <price> 有文本内容,因为他们包含文本。


更多关于XML的详细信息,可参考XML教程


下面这个示例演示了如何生成一张有关书店XML的文件,然后将其予以保存在本地;


代码示例如下:

MainActivity.java

package com.example.administrator.testobtainxml;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Xml;import android.view.View;import org.xmlpull.v1.XmlSerializer;import java.io.File;import java.io.FileOutputStream;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void xml(View view){        /***         * 模拟生成3Book对象         * ***/        ArrayList<Book> bookStore = new ArrayList<>();        bookStore.add(new Book("WP","45"));        bookStore.add(new Book("IOS","56"));        bookStore.add(new Book("Android","67"));        XmlSerializer xmlSerializer = Xml.newSerializer();        /***         * 主要用于XML文件的头声明,一般在XML文件的第一行,我们都可以看到类似的格式:         *  <?xml version="1.0" encoding="ISO-8859-1"?>         *         * startDocument(String encoding,Boolean standalone)         * encoding:         * 声明XML文件的编码格式         *         * standalone         * 表示该xml是不是独立的,如果是yes         * 则表示这个XML文档时独立的,不能引用外部的DTD规范文件;         * 如果是no,则该XML文档不是独立的,表示可以引用外部的DTD规范文档         * ***/        try {            /***             * 若存在则打开文件,             * 若不存在,则其会自动创建文件;             * **/            File file = new File(getFilesDir(),"test.xml");            /***             * 设置XML文件的输出路径             * **/            xmlSerializer.setOutput(new FileOutputStream(file),"utf-8");            /***             * 设置XML的声明部分             * **/            xmlSerializer.startDocument("utf-8",true);            /***             * 设置XML的根元素             * ***/            xmlSerializer.startTag(null,"BookStore");            /***             * 设置XML的子元素             * **/            for(int i=0; i<bookStore.size(); i++){                /***                 * 子元素的开始标签                 * **/                xmlSerializer.startTag(null,"Book");                xmlSerializer.startTag(null,"name");                xmlSerializer.text(bookStore.get(i).getName());                xmlSerializer.endTag(null,"name");                xmlSerializer.startTag(null,"price");                xmlSerializer.text(bookStore.get(i).getPrice());                xmlSerializer.endTag(null,"price");                /***                 * 子元素的结束标签                 * **/                xmlSerializer.endTag(null,"Book");            }            /***             * 根元素的结束标签             * **/            xmlSerializer.endTag(null,"BookStore");            /***             * 结束XML的写操作             * **/            xmlSerializer.endDocument();        } catch (Exception e) {            e.printStackTrace();        }    }}

Book.java

package com.example.administrator.testobtainxml;/** * Created by Will Smith on 2016/6/28. */public class Book {    private String name,price;    public Book(String name,String price) {        this.name = name;        this.price = price;    }    public String getName() {        return name;    }    public String getPrice() {        return price;    }    public void setName(String name) {        this.name = name;    }    public void setPrice(String price) {        this.price = price;    }}


运行结果:
将生成的XML文件,用浏览器打开如下:



总结:
1>
对于XML的操作,首先我们应该弄清楚其XML的格式

2>对于XML的写操作,主要是用到了XmlSerializer类来实现,
这样我们就无需手动一点一点地再进行输入,从而更方便快捷;

3>
由于这里用到了SD卡的写文件操作,所以这里记得在AndroidManifest.xml中添加一下写权限

源码:
生成XML示例源码
0 0
原创粉丝点击