Java眼中的XML--文件读取--1 应用DOM方式解析XML
2015-08-20 00:36
716 查看
初次邂逅XML:
第二种 完整代码
上面两种情况的对比归纳,理解的时候,脑子里要有XML节点的图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/01/75e69e088eba98acea0ec755f8d5ae87.gif)
3、使用DOM解析XML文件的节点名和节点值
再来看XML的代码:
下面进行解析子节点:
获取节点名
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/01/3b02cdbbb0c4ea781c365142c422350c.gif)
获取节点值:
因为一个节点转为Element类型之后,比如<name>冰火之歌</name>中,冰火之歌就不是该节点的值NodeValue而是该节点的子节点。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/01/1a0cf68c4912bc780adefbaf74c310ed.gif)
两种获取子节点的value:
public class DOMTest { public static void main(String[] args) { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder db = dbf.newDocumentBuilder(); Document d = db.parse("books.xml"); //1、根据节点名book,获取节点集合 NodeList nodelist = d.getElementsByTagName("book"); //2、遍历集合中所有的元素(节点),并强制转换为element for (int i = 0; i < nodelist.getLength(); i++) { Element node = (Element) nodelist.item(i); String str = node.getAttribute("id"); System.out.println(str); } } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
第二种 完整代码
上面两种情况的对比归纳,理解的时候,脑子里要有XML节点的图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/01/75e69e088eba98acea0ec755f8d5ae87.gif)
3、使用DOM解析XML文件的节点名和节点值
再来看XML的代码:
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id="1"> 换行符算一个子节点,这里是第一个 <name>冰与火之歌</name> 第二个换行符 <author>乔治马丁</author> 第三个 <year>2014</year> 第四个 <price>89</price> 第五个,所以加上正儿八经的四个节点,一共9个子节点 </book> <book id="2"> <name>安徒生童话</name> <year>2004</year> <price>77</price> <language>English</language> </book> </bookstore>
下面进行解析子节点:
获取节点名
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/01/3b02cdbbb0c4ea781c365142c422350c.gif)
获取节点值:
因为一个节点转为Element类型之后,比如<name>冰火之歌</name>中,冰火之歌就不是该节点的值NodeValue而是该节点的子节点。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/01/1a0cf68c4912bc780adefbaf74c310ed.gif)
两种获取子节点的value:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/01/5c3a86e34b59b42f469ff17dcaa1c8f7.gif)
相关文章推荐
- android 开发环境 eclipse adt sdk
- JAVA中创建字符串的两种方式的区别
- Struts2中 Result类型配置详解
- java多线程并发系列之闭锁(Latch)和栅栏(CyclicBarrier)
- 彻底删除jdk - java -version和环境变量设置无效的可能情况
- java中的内部类
- DesignPattern_Java:设计模式分类和设计原则
- 大龄屌丝自学笔记--Java零基础到菜鸟--005
- java设计模式(1)-------单例,工厂,值对象,装饰模式
- eclipse调试(转)
- Java基础——反射(待续)
- struts2传递对象
- java之 ------ 设计思想
- JAVA并发编程——守护线程(Daemon Thread)
- 几种序列化协议(protobuf,xstream,jackjson,jdk,hessian)相关数据
- Eclipse中设置编码的方式
- 在 Eclipse 中使用 Maven 构建 Web 项目
- 在MyEclipse的web项目/java项目中,使用Hibernate-tools中的hbm2java和hbm2ddl工具,根据hbm文件自动生成pojo和数据库脚本
- java入门之继承接口
- 使用json-lib进行Java和JSON之间的转换