Android中解析XML的方法

时间:2023-03-08 23:40:44
Android中解析XML的方法

假设我要解析如下的XML文件:

 <?xml version="1.0" encoding="UTF-8"?>
<books>
<book price="99.0" 出版日期="2008年">疯狂java讲义</book>
<book price="199.0" 出版日期="2009年">疯狂android讲义</book>
<book price="79.0" 出版日期="2010年">疯狂讲义</book>
</books>

首先将该文件放到res/xml文件夹下,如果没有可以手动建立,然后解析代码如下:

 public void xmlparser(View v) {

         XmlResourceParser xmlResourceParser = getResources().getXml(R.xml.books);// 获取xml文件的解析器
try {
StringBuilder sb = new StringBuilder();
while (xmlResourceParser.getEventType() != XmlResourceParser.END_DOCUMENT) {// 如果没有到文档的结尾处
if (xmlResourceParser.getEventType() == XmlResourceParser.START_TAG) {// 如果遇到标签的开始标记,就开始读取类容
// 获取标签的签名
String tagName = xmlResourceParser.getName();
if (tagName.equals("book")) { String bookPrice = xmlResourceParser.getAttributeValue(0);// 获取标签中的第一个属性的值,这里是“price”的值
String bookdata = xmlResourceParser.getAttributeValue(1);// 获取标签中的第二个属性的值,这里是“出版日期”的值
String bookName = xmlResourceParser.nextText();// 获取文本节点的值,这里是书的名字 sb.append("价格:");
sb.append(bookPrice);
sb.append("出版日期:");
sb.append(bookdata);
sb.append("书名:");
sb.append(bookName);
sb.append("\n");
} }
xmlResourceParser.next();// 获取解析器的下一个事件 } textView.setText(sb.toString()); } catch (XmlPullParserException e) {
e.printStackTrace(); } catch (IOException e) {
e.printStackTrace();
} }

解析后的结果如下:

Android中解析XML的方法