假设我要解析如下的XML文件:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <books> 3 <book price="99.0" 出版日期="2008年">疯狂java讲义</book> 4 <book price="199.0" 出版日期="2009年">疯狂android讲义</book> 5 <book price="79.0" 出版日期="2010年">疯狂讲义</book> 6 </books>
首先将该文件放到res/xml文件夹下,如果没有可以手动建立,然后解析代码如下:
1 public void xmlparser(View v) { 2 3 XmlResourceParser xmlResourceParser = getResources().getXml(R.xml.books);// 获取xml文件的解析器 4 try { 5 StringBuilder sb = new StringBuilder(); 6 while (xmlResourceParser.getEventType() != XmlResourceParser.END_DOCUMENT) {// 如果没有到文档的结尾处 7 if (xmlResourceParser.getEventType() == XmlResourceParser.START_TAG) {// 如果遇到标签的开始标记,就开始读取类容 8 // 获取标签的签名 9 String tagName = xmlResourceParser.getName(); 10 if (tagName.equals("book")) { 11 12 String bookPrice = xmlResourceParser.getAttributeValue(0);// 获取标签中的第一个属性的值,这里是“price”的值 13 String bookdata = xmlResourceParser.getAttributeValue(1);// 获取标签中的第二个属性的值,这里是“出版日期”的值 14 String bookName = xmlResourceParser.nextText();// 获取文本节点的值,这里是书的名字 15 16 sb.append("价格:"); 17 sb.append(bookPrice); 18 sb.append("出版日期:"); 19 sb.append(bookdata); 20 sb.append("书名:"); 21 sb.append(bookName); 22 sb.append("\n"); 23 } 24 25 } 26 xmlResourceParser.next();// 获取解析器的下一个事件 27 28 } 29 30 textView.setText(sb.toString()); 31 32 } catch (XmlPullParserException e) { 33 e.printStackTrace(); 34 35 } catch (IOException e) { 36 e.printStackTrace(); 37 } 38 39 }
解析后的结果如下:
时间: 2024-11-07 13:50:04