具体的使用方法如下:

(1)得到 DOM 解析器的工厂实例

DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();

(2)从 DOM 工厂获得 DOM 解析器

DocumentBuilder dombuilder=domfac.newDocumentBuilder();

(3 )把要解析的 XML 文档转化为输入流,以便 DOM 解析器解析它

InputStream is= new  FileInputStream("test1.xml");

(4)解析 XML 文档的输入流,得到一个 Document

Document doc=dombuilder.parse(is);

(5)得到 XML 文档的根节点

Element root=doc.getDocumentElement();

(6)得到节点的子节点

NodeList books=root.getChildNodes();

Java代码  
  1. package com.st.demo;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.InputStream;
  5. import javax.xml.parsers.DocumentBuilder;
  6. import javax.xml.parsers.DocumentBuilderFactory;
  7. import org.w3c.dom.Document;
  8. import org.w3c.dom.Element;
  9. import org.w3c.dom.Node;
  10. import org.w3c.dom.NodeList;
  11. public class XmlReader {
  12. public static void main(String[] args) {
  13. XmlReader reader = new XmlReader();
  14. }
  15. public XmlReader(){
  16. DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
  17. try {
  18. DocumentBuilder domBuilder = domfac.newDocumentBuilder();
  19. InputStream is = new FileInputStream(new File("D:/test1.xml"));
  20. Document doc = domBuilder.parse(is);
  21. Element root = doc.getDocumentElement();
  22. NodeList books = root.getChildNodes();
  23. if(books!=null){
  24. for (int i = 0; i < books.getLength(); i++) {
  25. Node book = books.item(i);
  26. if(book.getNodeType()==Node.ELEMENT_NODE) {
  27. //(7)取得节点的属性值
  28. String email=book.getAttributes().getNamedItem("email").getNodeValue();
  29. System.out.println(email);
  30. //注意,节点的属性也是它的子节点。它的节点类型也是Node.ELEMENT_NODE
  31. //(8)轮循子节点
  32. for(Node node=book.getFirstChild();node!=null;node=node.getNextSibling()) {
  33. if(node.getNodeType()==Node.ELEMENT_NODE) {
  34. if(node.getNodeName().equals("name")) {
  35. String name=node.getNodeValue();
  36. String name1=node.getFirstChild().getNodeValue();
  37. System.out.println(name);
  38. System.out.println(name1);
  39. }
  40. if(node.getNodeName().equals("price")) {
  41. String price=node.getFirstChild().getNodeValue();
  42. System.out.println(price);
  43. }
  44. }
  45. }
  46. }
  47. }
  48. }
  49. catch (Exception e) {
  50. // TODO Auto-generated catch block
  51. e.printStackTrace();
  52. }
  53. }
  54. }
Xml代码  
  1. <?xml version="1.0" encoding="GB2312" standalone="no"?>
  2. <books>
  3. <book email="zhoujunhui">
  4. <name>rjzjh</name>
  5. <price>jjjjjj</price>
  6. </book>
  7. </books>

java中调用xml的方法:DocumentBuilderFactory的更多相关文章

  1. 【Android】java中调用JS的方法

    最近因为学校换了新的教务系统,想做一个模拟登陆功能,发现登陆的账号和密码有一个js脚本来进行加密 整理了一下java中执行JS的方法 智强教务 账号 密码 加密方法 var keyStr = &quo ...

  2. java中调用dll文件的两种方法

    一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676   JNativ ...

  3. 在java中调用python方法

    1.http://sourceforge.net/projects/jython/下载jython包,把其中的jython.jar添加到工程目录 示例: 1.摘自:http://blog.csdn.n ...

  4. 在Java中调用Python

    写在前面 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢.当然,之所以要面对这个问题,或许是因为一些历史原因,或者仅仅是为了简单.恰好我在项目中就遇到了这个问题 ...

  5. JAVA如何调用C/C++方法

    JAVA如何调用C/C++方法 2013-05-27 JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能.解决JAVA对本地操作的 ...

  6. Java中调用c/c++语言出现Exception in thread "main" java.lang.UnsatisfiedLinkError: Test.testPrint(Ljava/lang/String;)V...错误

    错误: Exception in thread "main" java.lang.UnsatisfiedLinkError: Test.testPrint(Ljava/lang/S ...

  7. java中调用js脚本

    JDK1.6加入了对Script(JSR223)的支持.这是一个脚本框架,提供了让脚本语言来访问Java内部的方法.你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本.这个脚本API允许你为脚 ...

  8. 如何在Java中调用Python代码

    有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调 ...

  9. 在Java中调用Python代码

    极少数时候,我们会碰到类似这样的问题:与A同学合作写代码, A同学只会写Python,不熟悉Java ,而你只会写Java不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方 ...

随机推荐

  1. 微信touchmove不生效

    最近在写一个微信里面滑动切换图片的功能,发现在chrome下都正常显示,可是在微信和qq浏览器里面就是不行. 经过一番排查,发现了问题: touchmove只触发了一次. 解决方案: 在touchst ...

  2. 修改客户端连接的服务器IP地址(内部使用)

    登录系统时如果出现 “验证失败”,或者,无法登陆系统,请修改服务器端IP地址,修改方法如下: 注意: (1)修改服务器端IP地址时,要提前关闭/退出客户端.建议也看看“Windows的任务管理器”中是 ...

  3. 微信小程序-视图容器组件

    view 视图容器 例如: <view class="section"> <view class="section__title">fl ...

  4. ueditor .net版本上传图片功能配置

    1.官网下载 UEditor .Net最新版:官方网址:http://ueditor.baidu.com/website/download.html#ueditor   UTF-8版 和GBK版选择疑 ...

  5. Vue2随笔

    1. computed有缓存 methods没有缓存 慢慢更新中..... 2.Class与Style绑定 <div class="static" v-bind:class= ...

  6. Openfire用户密码加密解密

    需求要求审核过程中都用匿名进行用户注册登录,注册用户审核通过后才使用openfire内置表 如何做到用户密码统一 Openfire是通过org.jivesoftware.util.Blowfish.j ...

  7. About next_permutation

    哈哈没错这个又是我们C++党的语言优势之一,用这个函数可以求当前排序的下一个排序,也就是说可以方便的求全排列,用这个函数需要用到algorithm这个头文件. 与这个函数相反的是prev_permut ...

  8. 根据标记清空页面中所有的input对象

    function clear1(flag) { //获取页面中所有的input对象 var inputs = document.getElementsByTagName("input&quo ...

  9. js和jquery获取当前对象的子元素

    开发中经常遇到需要获取ul下的il对象,个人总结了js和jquery的方法. HTML片断: <ul class="box"> <li>子元素1</l ...

  10. 对象排序,compareTo

    第一个例子 /*为了比较,让自己的类实现Comparable接口,按照自己想要的排序方式重写compareTo *Map只是提供了对键的排序,但是当我们需要对值排序时就的提供我们自己的比较器 这里 只 ...