XML:可扩展的标记性语言,提供了一个跨平台,跨网络,跨程序的语言数据描述方式,使用XML可以方便的实现数据交换,系统配置等 常见功能---不过现在常用的数据交换是使用json
XML:语法规则
<?xml version="1.0" encoding="utf-8" ?>
<students>
<student id="1000">
<name>彭</name>
<age>23</age>
</student>
</students>
1.区分大小写
2.第一行是前导区,只能放<?xml version="1.0" encoding="utf-8" ?>
3.除了第一行之外的称为数据区:所有数据区必须有一个根节点,一个根节点可以包含多个子节点,但是每个节点必须完结
4.XML中的标签称为元素,第一个标签称为根节点<students>,上面代码中的 彭 被称为文本节点
5.XML中标签不能嵌套
SAX解析XML
1.首先需要定义一个帮助类,并且继承DefaultHandler类
2.实现
startDocument() ,endDocument(),
startElement(),
endElement(),
characters()
其中startDocument() ,endDocument()只运行一次,所以可以在startDocument()
中初始化集合等,
其中startElement(),endElement(),characters()多次运行。
3.建立专门开始解析的类
3.1首先建立SAX的工厂类实例:SAXParserFactory factory = SAXParserFactory.newInstance();
3.2通过工厂建立解析器:SAXParser parser = factory.newSAXParser();
4.SAX解析的时候需要帮助类和一个获取xml文件的输入流,所以要先创建上面继承DefaultHandler类的实例和输入流实例:
SaxHandlerUtils handler = new SaxHandlerUtils();
InputStream is = new FileInputStream("db/book.xml");
sax.parse(is, handler);
PULL解析XML
步骤和SAX解析类似--不是JDK自带,需要JAR包--(安卓自带)
1.首先创建Pull的工厂实例
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
2.再通过工厂类创建解析器
XmlPullParser parser = factory.newXmlPullParser();
3.获取数据源
parser.setInput("xml地址","utf-8");
4.获取事件的类型
获取的事件类型都是int型的常量,这些事件的类型代表的是程序运行的位置(因为在JAR文件中,把这些
END_DOCUMENT,START_TAG状态都定义成了常量
)
END_DOCUMENT代表运行到了根节点的关闭元素的位置
START_DOUCUMENT代表刚开始运行根节点
START_TAG代表运行到元素标签(就是里面有属性,或者标签开始和闭合之间有文本的标签)
END_TAG代表运行到元素标签的闭合初
int type = parser.getEventType();
5.需要用while(type != END_DOCUMENT)循环不断判断事件类型是不是等于END_DOCUMENT
6.获取元素的标签名(用这个来判断xml文件中的元素名是否等于当前获取到的元素名称,因为程序是不断运行的,)
String tag = parser.getName();