A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯超 高级黑马   /  2013-5-18 10:11  /  992 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. <books>
  2.         <book id="1">
  3.                 <name>fengchao</name>
  4.                 <age>21</age>
  5.         </book>

  6.         <book id="2">
  7.                 <name>fengchao11</name>
  8.                 <age>213</age>
  9.         </book>
  10.        
  11. </books>
复制代码
book.xml存放于src目录下。
解析该book文件需要一个复制类Book.java如下:
  1. package book;

  2. public class Book {
  3.         private String boodid;
  4.         public String getBoodid() {
  5.                 return boodid;
  6.         }
  7.         public void setBoodid(String boodid) {
  8.                 this.boodid = boodid;
  9.         }
  10.         private String name;
  11.         private int age;
  12.         public String getName() {
  13.                 return name;
  14.         }
  15.         public void setName(String name) {
  16.                 this.name = name;
  17.         }
  18.         public int getAge() {
  19.                 return age;
  20.         }
  21.         public void setAge(int age) {
  22.                 this.age = age;
  23.         }
  24.         public String toString() {
  25.                 return "name :" + name + "::: age" + age;
  26.         }
  27. }
复制代码
解析类如下:
  1. package book;

  2. import java.io.IOException;
  3. import java.util.ArrayList;
  4. import java.util.List;

  5. import javax.xml.parsers.DocumentBuilder;
  6. import javax.xml.parsers.DocumentBuilderFactory;
  7. import javax.xml.parsers.ParserConfigurationException;

  8. import org.w3c.dom.Document;
  9. import org.w3c.dom.NamedNodeMap;
  10. import org.w3c.dom.Node;
  11. import org.w3c.dom.NodeList;
  12. import org.xml.sax.SAXException;

  13. public class DomHandler {
  14.         public static void main(String[] args) {
  15.                 DomHandler dom = new DomHandler();
  16.                 dom.process();
  17.         }
  18.         public List<Book> process() {
  19.                 DocumentBuilderFactory  domFactory = DocumentBuilderFactory.newInstance();
  20.                 domFactory.setValidating(false);
  21.                 domFactory.setNamespaceAware(true);
  22.                
  23.                 try {
  24.                         DocumentBuilder builder = domFactory.newDocumentBuilder();
  25.                         Document document = builder.parse("src/book.xml");
  26.                         Node node = document.getFirstChild();
  27.                         //System.out.println(node.getNodeName());
  28.                         //得到所有的book结点
  29.                         NodeList nodes = node.getChildNodes();  //返回他得子结点
  30.                         //System.out.println(nodes.getLength());
  31.                         List<Book> list = new ArrayList<Book>();
  32.                        
  33.                         for(int i = 0; i < nodes.getLength(); i++) {
  34.                                 Book book = new Book();
  35.                                 Node bookNode = nodes.item(i);
  36.                                 if(!bookNode.hasChildNodes()) {
  37.                                         continue;
  38.                                 }
  39.                                 NamedNodeMap  attributes = bookNode.getAttributes();
  40.                                 String bookid = attributes.getNamedItem("id").getNodeValue();
  41.                                 book.setBoodid(bookid);
  42.                                 //获取book中的结点 并存入Book中
  43.                                 Node child = bookNode.getFirstChild();  //获取第一个结点
  44.                                 for(int j = 0; j < bookNode.getChildNodes().getLength(); j++) {
  45.                                         if(j != 0)
  46.                                                 child = child.getNextSibling();
  47.                                         String name = child.getNodeName();
  48.                                         //System.out.println(name);
  49.                                         if(name.equals("name"))
  50.                                                 book.setName(child.getTextContent());
  51.                                         if(name.equals("age"))
  52.                                                 book.setAge(Integer.valueOf(child.getTextContent()));
  53.                                        
  54.                                 }
  55.                                 list.add(book);
  56.                         }
  57.                         return list;
  58.                 } catch (ParserConfigurationException e) {
  59.                         // TODO Auto-generated catch block
  60.                         e.printStackTrace();
  61.                 } catch (SAXException e) {
  62.                         // TODO Auto-generated catch block
  63.                         e.printStackTrace();
  64.                 } catch (IOException e) {
  65.                         // TODO Auto-generated catch block
  66.                         e.printStackTrace();
  67.                 }
  68.                 return null;
  69.         }
  70. }
复制代码
测试通过。结果为:
name :fengchao::: age21
name :fengchao11::: age213
    有兴趣的同学也可以学习一下SAX解析。
结束!

3 个回复

倒序浏览
学习一下,解析XML一直不是很熟
回复 使用道具 举报
如果问题已经解决了,那么大家请把帖子的类型改为“已解决”,在自己帖子的左下角点编辑,然后选择帖子的分类进行改正。{:soso_e163:}

帖子的问题还没解决  哈哈
回复 使用道具 举报
袁梦希 发表于 2013-5-18 12:45
如果问题已经解决了,那么大家请把帖子的类型改为“已解决”,在自己帖子的左下角点编辑,然后选择帖子的分 ...

问题我不是解决了么·~·····
  元梦溪
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马