xml文件解析之pull解析
发布时间:2020-12-16 00:10:04 所属栏目:百科 来源:网络整理
导读:xml文件解析: xml文件: pre name="code" class="html"span style="font-size:14px;"?xml version="1.0" encoding="utf-8"?books book id100/id nameandroid学习/name price20/price /book book id101/id name好好学习,天天向上/name price12.2/price /boo
|
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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
