具体的使用方法如下:

(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. linux内存占用查看命令

    ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep tomcat | sort -nrk5 其中rsz为实际内存,上例实现按内存排序 ...

  2. SuiteScript > RecordType internalID采集步骤与结果

    当你碰到一个有很多sub Fields的id需要map到js文件的时候,是不是想到一个个复制到js文件中?建立成Object,library起来,方便不同的module中共享. 一个复制,很烦,很浪费 ...

  3. Eclipse不显示项目栏

    Window>show view>package或者Window>show view>Other...  在弹出的对话框中搜索"Package".

  4. ubuntu一些常用的命令

    1.docker里的ubuntu不知道密码,更新密码 sudo passwd 2.解压zip文件 unzip xx.zip 3.安装LAMP (1)sudo apt-get install apach ...

  5. git中忽略UserInterfaceState.xcuserstate的方法

    在commit 时候一直会提示userinterfacestate.xcuserstate文件尚未commit. 你可以用命令行 git rm --cached [YourProjectName].x ...

  6. php : 常用函数

    常用函数: <?php /** * 获取客户端IP * @return [string] [description] */ function getClientIp() { $ip = NULL ...

  7. 单例模式getInstance()

    /** * 对象的实例化方法,也是比较多的,最常用的方法是直接使用new,而这是最普通的,如果要考虑到其它的需要,如单实例模式,层次间调用等等. * 直接使用new就不可以实现好的设计好,这时候需要使 ...

  8. B/S网站中IE6兼容问题

    在HTML中定义的样式,部分样式在IE7以前的版本中的效果是不同的,所以需要在网页中定义让浏览器以IE8的模式启动. 在HEAD中定义标签meta如下: <meta http-equiv=&qu ...

  9. linux编程中接收主函数返回值以及错误码提示

    程序A创建子进程,并调用进程B,根据不调用的不同情况,最后显示结果不同. #include <stdio.h> #include <unistd.h> #include < ...

  10. CDN加速原理

    原文链接:http://www.72e.net/cdnspeed/cdnyuanli.aspx 首先,让我们来看一下传统的Internet网络的基本结构和数据传输情况,如下图所示. Internet  ...