具体的使用方法如下:

(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. 【前端】【转】JS跨域问题总结

    详情见原博客:详解js跨域问题 概念:只要协议.域名.端口有任何一个不同,都被当作是不同的域. 跨域资源共享(CORS) CORS(Cross-Origin Resource Sharing)跨域资源 ...

  2. EF常用命令行

    启用迁移:指定迁移的目录和数据库上下文名称Enable-Migrations -MigrationsDirectory "MigrationsHis" -ContextTypeNa ...

  3. 2-st学习笔记

    2-ST是一种巧妙的建图模式....其实,主要是将互相限制的条件转化为有向图.实现时,将每个点拆成两点,对应这个点的两种取值,然后求强连通分量.由于每个点只能有一种取值,所以若强连通分量中某一个点拆成 ...

  4. UIButton的文本与图片的布局

    UIButton内部文本和图片的布局是我们日常代码中,不可缺少的部分,按钮默认左边图片右边文本,那要实现左边文本,右边图片,我们该怎么解决呢,上面图片,下面文本又该怎么办呢 其实很简单,今天总结下,目 ...

  5. attr和prop区别

    今天写了个小程序,获取input[checked]属性,$('#check1').attr('checked'),结果返回undefined,查询了一番, 如果是具有true和false两个属性值的属 ...

  6. ximalaya

  7. java学习笔记----枚举测试题

    定义义一个交通灯枚举类,包含红灯.绿灯.黄灯,需要有获得下一个灯的方法,并实现红灯出现5秒之后变成绿灯,绿灯3秒之后变成黄灯,黄灯2秒之后变成红灯,如此循环 public class Test5 { ...

  8. TC250专场

    SRM 623 DIV2 1000pt 题意:给出一个最多50*50的矩阵,每个单元可能为'.'.'P'.'A','.'代表空地,你每次操作可以把一个P或者A拿到空地上,求一个最大的含有相同字符的矩形 ...

  9. 慕课网__HTML5 存储

    application cache 只能更新全部,不能更新单独的文件 在更新后,要重新打开浏览器,缓存才会生效, 不能实时生效

  10. mac系统安装node

    1.node 是通过brew来安装的,所以第一步先安装brew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebre ...