dom方法读取xml(不常用)

Book.java

package com.xml.demo;

public class Book {
    private int id;
    private String name;
    private Float money;

    public int getId() {
        return id;
    }

    @Override
    public String toString() {
        return "Book [id=" + id + ", name=" + name + ", money=" + money + "]";
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Float getMoney() {
        return money;
    }

    public void setMoney(Float money) {
        this.money = money;
    }

    public Book() {
        // TODO Auto-generated constructor stub
    }

}

DemoServer.java

package com.xml.demo;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class DemoServer {

    public DemoServer() {
        // TODO Auto-generated constructor stub
    }

    public List<Book> getBooks(InputStream inputstream) throws Exception
    {
        List<Book> list=new ArrayList<Book>();
        //创建一个document工厂
        DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
        DocumentBuilder builder=factory.newDocumentBuilder();
        Document document=builder.parse(inputstream);
        Element element=document.getDocumentElement();//获得稳定的元素节点
        NodeList bookNodes=element.getElementsByTagName("book");
        for(int i=0;i<bookNodes.getLength();i++)
        {
            Element bookElement=(Element) bookNodes.item(i);
            Book book=new Book();
            book.setId(Integer.parseInt(bookElement.getAttribute("id")));
            NodeList childNodes=bookElement.getChildNodes();
            for(int j=0;j<childNodes.getLength();j++)
            {
                if(childNodes.item(j).getNodeType()==Node.ELEMENT_NODE)
                {
                    if("name".equals(childNodes.item(j).getNodeName()))
                    {
                        book.setName(childNodes.item(j).getFirstChild().getNodeValue());
                    }else if("price".equals(childNodes.item(j).getNodeName()))
                    {
                        book.setMoney(Float.parseFloat(childNodes.item(j).getFirstChild().getNodeValue()));
                    }
                }
            }
            list.add(book);
        }
        return list;

    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        String path="http://weikew.gotoip55.com/person.xml";
        InputStream inputstream=HttpUtils.getXML(path);
        DemoServer server=new DemoServer();
        try {
            List<Book> list=server.getBooks(inputstream);
            for(Book book:list)
            {
                System.out.println(book.toString());
            }
        } catch (Exception e) {
            // TODO: handle exception
        }

    }

}

HttpUtils.java

package com.xml.demo;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpUtils {

    public HttpUtils() {
        // TODO Auto-generated constructor stub
    }
    public static InputStream getXML(String path)
    {
        InputStream inputStream=null;
        try {
            URL url=new URL(path);
            if(url!=null)
            {
                HttpURLConnection connection=(HttpURLConnection)url.openConnection();
                connection.setConnectTimeout(3000);
                connection.setDoInput(true);
                connection.setRequestMethod("GET");
                int code=connection.getResponseCode();
                if(code==200)
                {
                    inputStream=connection.getInputStream();
                }

            }
        } catch (Exception e) {
            // TODO: handle exception
        }
        return inputStream;

    }

}

person.xml

<?xml version="1.0" encoding="utf-8"?>
<books>
<book id="20"><name>张老进</name><price>22.2</price></book>
<book id="33"><name>李法在</name><price>44.5</price></book></books>
时间: 2024-09-28 21:17:27

dom方法读取xml(不常用)的相关文章

[学习手记] Java中利用DOM方法解析XML文件

需求分析: 在做一个利用API的小东西时需要对返回的XML格式的数据进行解析 详见文章: [开发手记] 一款基于命令行的英英词典 (A CLI-Based EE Dictionary) 项目地址: https://github.com/hwding/seekDict 准备工作: 阅读Documentation 查阅相关代码 读入XML文件到程序内: 首先用DocumentBuilderFactory生成一个DocumentBuilder实例 DocumentBuilder docmumentBu

DOM与SAX读取XML方式的不同

操作XML有两种主要方法:DOM和SAX.DOM会把整个XML读入内存,解析为树,因此占用内存大,解析慢,优点是可以任意遍历树的节点.SAX是流模式,边读边解析,占用内存小,解析快,缺点是我们需要自己处理事件. 1. DOM是基于内存的,不管文件有多大,都会将所有的内容预先装载到内存中.从而消耗很大的内存空间.而SAX是基于事件的.当某个事件被触发时,才获取相应的XML的部分数据,从而不管XML文件有多大,都只占用了少量的内存空间. 2. DOM可以读取XML也可以向XML文件中插入数据,而SA

java读取xml文件的三种方法

xml既简单又标准,值得拥有和学习,好多地方都用的到.假设有这么一个book.xml: <?xml version="1.0" encoding="ISO-8859-1"?> <!-- Copyright w3school.com.cn --> <!-- W3School.com.cn bookstore example --> -<bookstore> -<book category="childre

c++ 使用xerces读取XML

XML作为一种重要的文件格式,应用面非常之广.从ASP.NET的web.config,到Android的页面设计开发,Webservice通信等.有时候难免需要我们通过程序进行创建与解析,最近刚完成一个C++项目,就需要读取XML配置文件,关于XML解析器的选择很多,可以参考:http://www.metsky.com/archives/578.html. 个人比较喜欢Apache的开源项目,所以使用的是:Xerces.它的使用方法,其实官方上已经有很多demo,详见:http://xerces

读取XML文件内容

myeclipse中类的格式 上面中的RunMain.java为程序执行的入口,JdbcUtil.java为实体类,XmlDocumentUtil.java执行解释xml文件与获取里面的属性,程序所需要导入的包为dom4j-1.6.1.jar与jaxen-1.1-beta-6.jar,jdbc.cfg.xml文件为需解释的xml文件此程序下载 jdbc.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <

用Qt读取xml文件,程序执行到 if(!doc.setContent(&amp;file)) 时候出错

看霍亚飞的那本<Qt Creator快速入门>,然后就照着写那个DOM方式读取xml文件的例子出这样的错误. 一开始大家都以为自己的路径会有问题,其实在之前open的时候没问题,怎么可能到后面这里才出问题呢?(自己也在这里绕了很多弯弯) 通过其他方式了解这个函数的原理,其实就是创建一个树,将xml格式的数据保存到一个树一样结构的doc里面去.也就是说,我们在创建这个树的时候出错了,定位一下就知道自己的XML文件是不是错了. 换一个xml,网上下下吧,比较一下发现,原来第一行的<?xml 

Dom4j读取xml文件——JAVA

前几天,用Dom4j写了三个版本的读取XML文件,现在分享下. 第一版本: XML: <?xml version="1.0" encoding="UTF-8"?> <do-config> <do path="User/adduser" type="UserPackage.UserServlet"> <forward name="Success">AddSucc

C#中常用的几种读取XML文件的方法

XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具.XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用.微软也提供了一系列类库来倒帮助我们在应用程序中存储XML文件. “在程序中访问

Dom方法,解析XML文件

Dom方法,解析XML文件的基本操作 1 package com.demo.xml.jaxp; 2 3 import java.io.IOException; 4 5 import javax.xml.parsers.DocumentBuilder; 6 import javax.xml.parsers.DocumentBuilderFactory; 7 import javax.xml.parsers.ParserConfigurationException; 8 import javax.x