java基础 读取XML文件数据
2016-03-08 01:09
399 查看
读取language.xml
<pre name="code" class="java"><span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?><Languages cat="it">
<lan id="1">
<name>Java</name>
<ide>Eclipse</ide>
</lan>
<lan id="2">
<name>Swift</name>
<ide>Xcode</ide>
</lan>
<lan id="3">
<name>C#</name>
<ide>Visual Studio</ide>
</lan>
</Languages></span>
测试代码如下:
<strong><span style="font-size:18px;">package com.demo; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class readxml { public static void main(String[] args) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new File("languages.xml")); //获得根节点 Element root = document.getDocumentElement(); System.out.println("cat = " + root.getAttribute("cat")); NodeList list = root.getElementsByTagName("lan"); for (int i = 0; i < list.getLength(); i++) { Element lan = (Element) list.item(i); System.out.println("---------------------"); System.out.println("id = " + lan.getAttribute("id")); //这样的方法getElementsByTagName()返回的是nodelist还需要取第一个值item(0),这种做法不好 // Element name = (Element) lan.getElementsByTagName("name").item(0); // System.out.println("name = " + name.getTextContent()); // Element ide = (Element) lan.getElementsByTagName("ide").item(0); // System.out.println("ide = " + ide.getTextContent()); //由每一个父节点获取到相应所有子节点,再循环取值 NodeList clist = lan.getChildNodes(); for (int j = 0; j < clist.getLength(); j++) { Node node = clist.item(j); //在读取xml文件时<>与<>中间的空白部分也会被识别出来,因此通过一判断是否为元素而排出空白部分 //不理解的话可以试着把判断删掉。就会把空白部分以text= 的形式打印出来 if (node instanceof Element) { System.out.println(node.getNodeName() + " = " + node.getTextContent()); } } } } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }</span></strong>
运行结果如下
cat = it
---------------------
id = 1
name = Java
ide = Eclipse
---------------------
id = 2
name = Swift
ide = Xcode
---------------------
id = 3
name = C#
ide = Visual Studio
相关文章推荐
- Spring高级事务管理难点剖析
- spring boot
- struts2-spring-hibernate
- eclipse常用插件,最实用的插件
- spring aop简介
- java 线程总结(坑)
- java CountDownLatch 多线程文件搜索
- java单例模式就有6种,你知道哪几种?!
- 如何给maven项目增加新的jar包(从服务器上下载)---通过eclipse工具
- Java基础知识
- Leetcode:66. Plus One(JAVA)
- 一个经典例子让你彻彻底底理解java回调机制
- java 通过反射获取调用类方法及属性
- Spring学习笔记十一---通过注解配置bean
- Spring学习笔记十一---Bean之间的关系@Autowired
- Spring学习笔记十二---泛型依赖注入
- java线程同步的五种方法
- java正则表达式语法详解及其使用代码实例
- 深入理解Java 虚拟机(周志明)笔记(四)——Java对象创建过程
- 深入理解Java 虚拟机(周志明)笔记(三)——Java对象在内存中的存储与访问