Dom解析xml文件

XML指可扩展标记语言
XML的设计宗旨是传输存储数据
XML文档树结构
XML文档形成了一种树结构,它从“根部”开始,然后扩展到枝叶

利用dom规范,能够实现dom 文档和xml之间的相互转换,遍历、操作相应dom文档的内容
DOM规范的核心就是树模型

DOM解析xml的步骤:
1.// 获得解析器工厂对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
2. // 通过解析器工厂对象新建一个文档解析器
DocumentBuilder builder = factory.newDocumentBuilder();
3.// 通过解析器解析xml文件,在内存中形成文档树(节点树)
// dom 适合于解析 xml 文件小,简单
Document doc = builder.parse(fileName);
4.// 根据标签名获得所有的 book 节点
NodeList nodeList = doc.getElementsByTagName(“book”);解析过程:
5.遍历节点集合 获取每个节点元素
for (int i = 0; i < nodeList.getLength(); i++) {
Element element = (Element) nodeList.item(i);
获取节点的属性 element.getAttribute(属性名)
6.获取子节点的值
属性名称 = doc.getElementsByTagName(“title”).item(i).getFirstChild().getNodeValue();

  • 举个栗子 导包要注意 导org.w3c.dom.

    解析bookstore 的XML

<Book>
    <book id="1001">
        <bookname >红楼梦</bookname>
        <bookauther>曹雪芹</bookauther>
        <bookprice>34.6</bookprice>
        <bookdata>1912-11-5</bookdata>
    </book>
    <book id="1002">
        <bookname >朝花夕拾</bookname>
        <bookauther>54</bookauther>
        <bookprice>44.8</bookprice>
        <bookdata>1954-10-5</bookdata>
    </book>
    </Book>
  //造工厂
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        //利用工厂造解析器
        DocumentBuilder db = dbf.newDocumentBuilder();
        //利用解析器将xml转换为Document对象
        //导包  org.w3c.dom.
        Document doc = db.parse(new File("2021Hunan/src/Day0102/bookstore.xml"));
        //利用Doc获得所有的Node节点,Nodelist
        NodeList list = doc.getElementsByTagName("book");
        for (int i = 0; i < list.getLength(); i++) {
           Element ele= (Element) list.item(i);
            int id=Integer.parseInt(ele.getAttribute("id"));
            String bookname=doc.getElementsByTagName("bookname").item(i).getFirstChild().getNodeValue();
           String bookauther=doc.getElementsByTagName("bookauther").item(i).getFirstChild().getNodeValue();
           double bookprice= Double.parseDouble(doc.getElementsByTagName("bookprice").item(i).getFirstChild().getNodeValue());
            Date date =new SimpleDateFormat("yyyy-MM-dd").parse(doc.getElementsByTagName("bookdata").item(i).getFirstChild().getNodeValue());
//            Book book=new Book(id,bookname,bookauther,bookprice,date);
//            System.out.println(book);

dom解析的优点:十分的便于进行增删改查的操作,只要解析一次拿到dom对象后可以重复的使用减少解析次数
缺点:解析比较慢,需要将整个文档都加载到内存解析完成后才能进行操作,非常耗内存

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值