Java:DocumentBuilderFactory调用XML的方法实例

首先得到:得到 DOM 解析器的工厂实例      DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();

然后从 DOM 工厂获得 DOM 解析器

DocumentBuilder dombuilder=domfac.newDocumentBuilder();

)把要解析的 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();


代码如下:

package com.st.demo;

import java.io.File;  
import java.io.FileInputStream;  
import java.io.InputStream;

import javax.xml.parsers.DocumentBuilder;  
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;  
import org.w3c.dom.Element;  
import org.w3c.dom.Node;  
import org.w3c.dom.NodeList;

public class XmlReader {  
    public static void main(String[] args) {  
        XmlReader reader = new XmlReader();  
    }  
    public XmlReader(){  
        DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();  
        try {  
            DocumentBuilder domBuilder = domfac.newDocumentBuilder();  
            InputStream is = new FileInputStream(new File("D:/test1.xml"));  
            Document doc = domBuilder.parse(is);  
            Element root = doc.getDocumentElement();  
            NodeList books = root.getChildNodes();  
            if(books!=null){  
                for (int i = 0; i < books.getLength(); i++) {  
                    Node book = books.item(i);  
                     if(book.getNodeType()==Node.ELEMENT_NODE) {  
                            //(7)取得节点的属性值  
                            String email=book.getAttributes().getNamedItem("email").getNodeValue();  
                            System.out.println(email);  
                            //注意,节点的属性也是它的子节点。它的节点类型也是Node.ELEMENT_NODE  
                            //(8)轮循子节点  
                            for(Node node=book.getFirstChild();node!=null;node=node.getNextSibling()) {  
                                if(node.getNodeType()==Node.ELEMENT_NODE) {  
                                    if(node.getNodeName().equals("name")) {  
                                        String name=node.getNodeValue();  
                                        String name1=node.getFirstChild().getNodeValue();  
                                        System.out.println(name);  
                                        System.out.println(name1);  
                                    }  
                                    if(node.getNodeName().equals("price")) {  
                                        String price=node.getFirstChild().getNodeValue();  
                                        System.out.println(price);  
                                    }  
                                }  
                            }  
                     }  
                }  
            }  
        } catch (Exception e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }

}  
}

(0)

相关推荐

  • java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion问题解决方法

    读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵. DOM解析的特性就是读取xml文件转换为 dom树形结构,通过节点进行遍历. 这是W3c关于节点的概念 如果xml中包含有大量的数据,由于dom一次性把xml装入内存中的特性,所以dom不适合于包含大量数据的xml解析.当包含有大量xml的时候,用SAX进行解析比较节省内存. 下面是一个运用DOM进行解析xml文件的例子: xml文件结构如下: <?xm

  • java 值Document解析xml详细介绍

    java 值Document解析xml详细介绍 使用jar包:jdom.jar 配置文件格式 global.xml 一.获取输入的值组成的结点 我们将每个结点使用"." 拼接起来, 如结点i ,拼接为abc.def.i, 注意不包含root.解析每个结点的名字. /** * 获取对应结点的名字 * @param name 不包含root结点的拼接,ie: abc.def.i * @return */ private String[] parsePropertyName(String n

  • Java注解之Retention、Documented、Inherited介绍

    Retention注解 Retention(保留)注解说明,这种类型的注解会被保留到那个阶段. 有三个值: 1.RetentionPolicy.SOURCE -- 这种类型的Annotations只在源代码级别保留,编译时就会被忽略 2.RetentionPolicy.CLASS -- 这种类型的Annotations编译时被保留,在class文件中存在,但JVM将会忽略 3.RetentionPolicy.RUNTIME -- 这种类型的Annotations将被JVM保留,所以他们能在运行时

  • Java:DocumentBuilderFactory调用XML的方法实例

    首先得到:得到 DOM 解析器的工厂实例      DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance(); 然后从 DOM 工厂获得 DOM 解析器 DocumentBuilder dombuilder=domfac.newDocumentBuilder(); )把要解析的 XML 文档转化为输入流,以便 DOM 解析器解析它 InputStream is= new  FileInputStream("test1.x

  • Java客户端调用.NET的WebService实例

    项目需要去调用.NET的WebSrevice,本身是Java,研究了半天,终于有些头绪,记下来. 1,新建.NET WebService.只在原方法上加上一个string类型的参数str [WebMethod] public string HelloWorld(string str) { return "Hello World"; } 2,新建Java的WebService客户端,lib引入以下5个jar包(我是用idea生成的WebService客户端,会下载7个包,我试着删掉了lo

  • java 请求跨域问题解决方法实例详解

    java 请求跨域问题解决方法实例详解 新建Util类,在Util中添加下面方法: /* * response请求跨域公共设置 */ public static HttpServletResponse SetHttpServletResponse( HttpServletResponse response) { response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader(&qu

  • Java 反射调用静态方法的简单实例

    以往都是使用反射调用实例方法,那么反射如何调用静态方法呢?看下面的例子 Class<?> threadClazz = Class.forName("java.lang.Math"); Method method = threadClazz.getMethod("abs", long.class); System.out.println(method.invoke(null, -10000l)); 只需要将invoke方法的第一个参数设为null即可! 以

  • Java正则表达式提取字符的方法实例

    正好遇到一个需求需要将字符串中特定的字符全部提取出来,这个如果是按常规的字符串处理的话非常的繁琐.于是想到用正则表达式来完成.项目需求是这样的:需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6 实现方法: import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { String s

  • Java存储过程调用CallableStatement的方法

    什么是存储过程? 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和一些特殊的控制结构组成.当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的.数据库中的存储过程可以看做是对编程中面向对象方法的模拟.它允许控制数据的访问方式. 存储过程的优点: (1).存储过程增强了SQL语言的功能和灵活性.存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算. (2).存储过程允许标准组件是编程.存储过程被创建后,可以在程

  • Android中常用的XML生成方法实例分析

    本文实例讲述了Android中常用的XML生成方法.分享给大家供大家参考.具体如下: 1. java代码: package com.android.antking.xml; import java.io.OutputStream; import java.util.List; import org.xmlpull.v1.XmlSerializer; import android.util.Xml; /**采用pull 生成xml文件 * * @author antkingwei * */ pub

  • C#调用SQLite的方法实例分析

    本文实例讲述了C#调用SQLite的方法.分享给大家供大家参考.具体分析如下: 一.SQLite简介: 当我们用到海量数据时一般会用Oracle,SQL Server,DB2,Sybase,MySQL等数据库来保存和管理数据.如果只是程序中需要保存少量数据的话直接整到注册表里,或者保存到一个XML文件中.那如果数据量刚好不多不少,用Oracle这样的数据库有点小题大作,没有必要.有个XML保存的话存取速度又比较慢.咋整呢?这时用SQLite这个小型的嵌入式数据库就是非常理想的选择.它用起来也很简

  • Java之Thread的join方法实例

    本文实例讲述了Java之Thread的join方法.分享给大家供大家参考.具体实现方法如下: join public final void join() throws InterruptedException等待该线程终止. 抛出: InterruptedException - 如果任何线程中断了当前线程.当抛出该异常时,当前线程的中断状态 被清除.   下面的例子 通俗的讲,就是A调用join方法后,只有等A所在的线程不再运行,才会将进程分配出去 复制代码 代码如下: public class

  • Java开发之Spring连接数据库方法实例分析

    本文实例讲述了Java开发之Spring连接数据库方法.分享给大家供大家参考,具体如下: 接口: package cn.com.service; import java.util.List; import cn.com.bean.PersonBean; public interface PersonService { //保存 public void save(PersonBean person); //更新 public void update(PersonBean person); //获取

随机推荐