java读取xml文件
来源:互联网 发布:php 二维数组过滤 编辑:程序博客网 时间:2024/05/16 10:30
Xml代码
Book.java用来组装数据和盛放数据
测试使用单元测试如下ParseTest.java
<?xml version="1.0" encoding="UTF-8"?> <books> <book id="12"> <name>thinking in java</name> <price>85.5</price> </book> <book id="15"> <name>Spring in Action</name> <price>39.0</price> </book> </books>
然后结合一张图来发现dom解析时需要注意的地方
在这里当我们得到节点book时,也就是图中1所画的地方,如果我们调用它的getChildNodes()方法,大家猜猜它的子节点有几个?不包括它的孙子节点,thinking in java这种的除外,因为它是孙子节点。它总共有5个子节点,分别是图中2、3、4、5、6所示的那样。所以在解析时,一定要小心,不要忽略空白的地方。
然后看代码来解析book.xml文件
DomParseService.java
Java代码
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.NodeList; import org.w3c.dom.Node; import com.xtlh.cn.entity.Book; public class DomParseService { public List<Book> getBooks(InputStream inputStream) throws Exception{ List<Book> list = new ArrayList<Book>(); 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(); // System.out.println("*****"+childNodes.getLength()); 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.setPrice(Float.parseFloat(childNodes.item(j).getFirstChild().getNodeValue())); } } }//end for j list.add(book); }//end for i return list; } }
Book.java用来组装数据和盛放数据
public class Book { private int id; private String name; private float price; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } @Override public String toString(){ return this.id+":"+this.name+":"+this.price; } }
测试使用单元测试如下ParseTest.java
public class ParseTest extends TestCase{ public void testDom() throws Exception{ InputStream input = this.getClass().getClassLoader().getResourceAsStream("book.xml"); DomParseService dom = new DomParseService(); List<Book> books = dom.getBooks(input); for(Book book : books){ System.out.println(book.toString()); } } }
0 0
- JAVA读取XML文件
- JAVA读取XML文件
- JAVA读取XML文件
- JAVA读取XML文件
- JAVA读取xml文件
- java 读取xml文件
- java读取XML文件
- Java 读取XML文件
- java读取XML文件
- Java读取xml文件
- JAVA读取xml文件
- Java读取xml文件
- Java读取xml文件
- java 读取xml文件
- JAVA读取XML文件
- JAVA读取xml文件
- JAVA读取xml文件
- java读取xml文件
- 网络图片下载与缓存
- ubuntu防火墙设置
- #leetcode#One Edit Distance
- 关于activiti数据库连接超时的问题
- r画双坐标
- java读取xml文件
- MongoDB中数据导入
- python中的os.path.dirname(__file__)的使用
- Maven+eclipse创建JavaWeb项目
- 计蒜客一轮 A
- 使用RMAN移动数据库
- ==和=== 的区别
- ListView局部更新(非notifyDataSetChanged)
- java.net.JarURLConnection示例