xml檔案解析:
xml檔案:
<pre name="code" class="html"><span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<books>
<book>
<id>100</id>
<name>android學習</name>
<price>20</price>
</book>
<book>
<id>101</id>
<name>好好學習,天天向上</name>
<price>12.2</price>
</book>
</books></span>
<span style="font-size:14px;">//将xml檔案轉換為資料
public void xmlParseTest() throws IOException, XmlPullParserException{
XmlPullParser pullParser = Xml.newPullParser(); //擷取XmlPullParser對象
InputStream is = getContext().getAssets().open("parse.xml"); //解析文本
ArrayList<Books> books = null ;
Books book = null; //通過對象Books擷取資料
pullParser.setInput(is, "UTF-8");
int type = pullParser.getEventType(); //擷取事件類型
while (type != pullParser.END_DOCUMENT) { //結束文本</books>
switch(type){
case XmlPullParser.START_DOCUMENT: //開始文本<books>
books = new ArrayList<Books>();
break;
case XmlPullParser.START_TAG: //開始标記 <book>
if (pullParser.getName().equals("book")) {
book = new Books();
}else if (pullParser.getName().equals("id")) {
type = pullParser.next(); //指向下一個位置,不然無法擷取資料
book.setId(Integer.parseInt(pullParser.getText()));
}else if (pullParser.getName().equals("name")) {
type = pullParser.next();
book.setName(pullParser.getText());
}else if (pullParser.getName().equals("price")) {
type = pullParser.next();
book.setPrice(Double.valueOf(pullParser.getText()));
}
break;
case XmlPullParser.END_TAG: //結束标記 </books>
if (pullParser.getName().equals("book")) {
books.add(book);
book = null; //置為空釋放資源
}
break;
}
type = pullParser.next(); //指向下一個标記
}
for (Books books2 : books) {
Logs.d("books-----id"+books2.getId()+",name--"+books2.getName());
}
}</span>
生成xml檔案:
<span style="font-size:14px;">//将資料轉換為xml字元串
public void serialize() throws IllegalArgumentException, IllegalStateException, IOException{
XmlSerializer serializer = Xml.newSerializer();
ArrayList<Books> bookList = new ArrayList<Books>();
Books books = new Books();
books.setId(12);
books.setName("android解析xml學習1");
books.setPrice(23.3);
bookList.add(books);
books = new Books();
books.setId(13);
books.setName("android解析xml學習2");
books.setPrice(24.3);
bookList.add(books);
books = new Books();
books.setId(14);
books.setName("android解析xml學習3");
books.setPrice(25.3);
bookList.add(books);
StringWriter os = new StringWriter();
serializer.setOutput(os);
serializer.startDocument("UTF-8", true);
serializer.startTag("", "books");
for (Books books2 : bookList) { //周遊資料
serializer.startTag("", "book");
serializer.startTag("", "id");
serializer.text(books2.getId()+"");
serializer.endTag("", "id");
serializer.startTag("", "name");
serializer.text(books2.getName());
serializer.endTag("", "name");
serializer.startTag("", "price");
serializer.text(books2.getPrice()+"");
serializer.endTag("", "price");
serializer.endTag("", "book");
}
serializer.endTag("", "books");
serializer.endDocument();
Logs.d(""+os.toString()); //此時列印資料與上方xml相同
}</span>