我们要解析的XML文件
<?xml version
="1.0" encoding
="utf-8"?>
<students
>
<student sex
="女">
<name
>李永进
</name
>
<age
>18</age
>
</student
>
<student sex
="女">
<name
>任广
</name
>
<age
>28</age
>
</student
>
<student sex
="男">
<name
>高阳
</name
>
<age
>38</age
>
</student
>
</students
>
一、Dom解析
package bw
.com
.xml
;
import org
.w3c
.dom
.Document
;
import org
.w3c
.dom
.Element
;
import org
.w3c
.dom
.NamedNodeMap
;
import org
.w3c
.dom
.Node
;
import org
.w3c
.dom
.NodeList
;
import java
.io
.InputStream
;
import java
.util
.ArrayList
;
import javax
.xml
.parsers
.DocumentBuilder
;
import javax
.xml
.parsers
.DocumentBuilderFactory
;
import javax
.xml
.parsers
.ParserConfigurationException
;
public class DomStudents {
public static ArrayList
<Students
> Doms(InputStream inputStream
){
ArrayList
<Students
> arrayList
= new ArrayList<>();
DocumentBuilderFactory documentBuilderFactory
= DocumentBuilderFactory
.newInstance();
try {
DocumentBuilder documentBuilder
= documentBuilderFactory
.newDocumentBuilder();
Document parse
= documentBuilder
.parse(inputStream
);
NodeList list
= parse
.getElementsByTagName("student");
for (int i
= 0;i
<list
.getLength();i
++){
Students students
= new Students();
Node item
= list
.item(i
);
NamedNodeMap attributes
= item
.getAttributes();
students
.sex
= attributes
.item(0).getNodeValue();
NodeList childNodes
= item
.getChildNodes();
for (int j
= 0;j
< childNodes
.getLength();j
++){
Node item1
= childNodes
.item(j
);
if(item1
.getNodeName().equals("name")){
students
.name
= item1
.getTextContent();
}else if(item1
.getNodeName().equals("age")){
students
.age
= item1
.getTextContent();
}
}
arrayList
.add(students
);
}
} catch (Exception e
) {
e
.printStackTrace();
}
return arrayList
;
}
}
开启Dom
InputStream open
= getAssets().open("rivers.xml");
ArrayList
<Rivers
> domr
= DomRivers
.domr(open
);
Log
.d("domrivers",domr
.toString());
二、Pull解析
package bw
.com
.xml
;
import org
.xmlpull
.v1
.XmlPullParser
;
import org
.xmlpull
.v1
.XmlPullParserFactory
;
import java
.io
.InputStream
;
import java
.util
.ArrayList
;
public class StudentXml {
public static ArrayList
<Students
> studentsArrayList(InputStream inputStream
){
ArrayList
<Students
> arrayList
= new ArrayList<>();;
try {
XmlPullParserFactory xmlPullParserFactory
= XmlPullParserFactory
.newInstance();
XmlPullParser xmlPullParser
= xmlPullParserFactory
.newPullParser();
int eventType
= xmlPullParser
.getEventType();
xmlPullParser
.setInput(inputStream
,"UTF-8");
Students students
= null;
while (eventType
!= XmlPullParser
.END_DOCUMENT){
switch (eventType
){
case XmlPullParser
.START_TAG:
if(xmlPullParser
.getName().equals("student")){
students
= new Students();
String attributeValue
= xmlPullParser
.getAttributeValue(0);
students
.sex
=attributeValue
;
}else if(xmlPullParser
.getName().equals("name")){
students
.name
= xmlPullParser
.nextText();
}else if(xmlPullParser
.getName().equals("age")){
students
.age
= xmlPullParser
.nextText();
}
break;
case XmlPullParser
.END_TAG:
if(xmlPullParser
.getName().equals("student")) {
arrayList
.add(students
);
}
break;
}
eventType
= xmlPullParser
.next();
}
} catch (Exception e
) {
e
.printStackTrace();
}
return arrayList
;
}
}
开启Pull
try {
InputStream open
= getAssets().open("students.xml");
ArrayList
<Students
> students
= StudentXml
.studentsArrayList(open
);
Log
.d("student",students
.toString());
} catch (Exception e
) {
e
.printStackTrace();
}
二、Sax解析
package bw
.com
.xml
;
import org
.xml
.sax
.Attributes
;
import org
.xml
.sax
.SAXException
;
import org
.xml
.sax
.helpers
.DefaultHandler
;
import java
.io
.InputStream
;
import java
.util
.ArrayList
;
import javax
.xml
.parsers
.ParserConfigurationException
;
import javax
.xml
.parsers
.SAXParser
;
import javax
.xml
.parsers
.SAXParserFactory
;
public class SaxStudentsXml {
ArrayList
<Students
> arrayList
= new ArrayList<>();;
Students students
;
String s
;
public ArrayList
<Students
> saxstudent(InputStream inputStream
) throws Exception
{
SAXParserFactory saxParserFactory
= SAXParserFactory
.newInstance();
SAXParser saxParser
= saxParserFactory
.newSAXParser();
saxParser
.parse(inputStream
,new saxxml());
return arrayList
;
}
class saxxml extends DefaultHandler{
@Override
public void startDocument() throws SAXException
{
super.startDocument();
}
@Override
public void endDocument() throws SAXException
{
super.endDocument();
}
@Override
public void startElement(String uri
, String localName
, String qName
, Attributes attributes
) throws SAXException
{
super.startElement(uri
, localName
, qName
, attributes
);
if(qName
.equals("student")){
students
= new Students();
String value
= attributes
.getValue(0);
students
.sex
= value
;
}
}
@Override
public void endElement(String uri
, String localName
, String qName
) throws SAXException
{
super.endElement(uri
, localName
, qName
);
if(qName
.equals("student")){
arrayList
.add(students
);
}else if(qName
.equals("name")){
students
.name
= s
;
}else if(qName
.equals("age")){
students
.age
= s
;
}
}
@Override
public void characters(char
[] ch
, int start
, int length
) throws SAXException
{
super.characters(ch
, start
, length
);
s
= new String(ch
, start
, length
);
}
}
}
开启Sax
try {
InputStream open
= getAssets().open("students.xml");
SaxStudentsXml saxStudentsXml
= new SaxStudentsXml();
ArrayList
<Students
> saxstudent
= saxStudentsXml
.saxstudent(open
);
Log
.d("saxstudent",saxstudent
.toString());
} catch (Exception e
) {
e
.printStackTrace();
}