`
被java残害的灵魂
  • 浏览: 4887 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

java读取xml

阅读更多
package org.showxml;

import java.io.File;

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

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

public class JavaReadXml {
  // Document可以看作是XML在内存中的一个镜像,那么一旦获取这个Document 就意味着可以通过对  
  // 内存的操作来实现对XML的操作,首先第一步获取XML相关的Document  
  private Document doc = null;  
  
  public void init(String xmlFile) throws Exception {  
  // 很明显该类是一个单例,先获取产生DocumentBuilder工厂  
  // 的工厂,在通过这个工厂产生一个DocumentBuilder,  
  // DocumentBuilder就是用来产生Document的  
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();  
  DocumentBuilder db = dbf.newDocumentBuilder();  
  // 这个Document就是一个XML文件在内存中的镜像  
  doc = db.parse(new File(xmlFile));  
  }  
  
  // 该方法负责把XML文件的内容显示出来  
  public void viewXML(String xmlFile) throws Exception {  
  this.init(xmlFile);  
  // 在xml文件里,只有一个根元素,先把根元素拿出来看看  
  Element element = doc.getDocumentElement();  
  System.out.println("根元素为:" + element.getTagName());  
  
  NodeList nodeList = doc.getElementsByTagName("person");  
  System.out.println("book节点链的长度:" + nodeList.getLength());  
  
  Node fatherNode = nodeList.item(0);  
  System.out.println("父节点为:" + fatherNode.getNodeName());  
  
  // 把父节点的属性拿出来  
  NamedNodeMap attributes = fatherNode.getAttributes();  
  
  for (int i = 0; i < attributes.getLength(); i++) {  
  Node attribute = attributes.item(i);  
  System.out.println("book的属性名为:" + attribute.getNodeName()  
  + " 相对应的属性值为:" + attribute.getNodeValue());  
  }  
  
  NodeList childNodes = fatherNode.getChildNodes();  
  System.out.println(childNodes.getLength());  
  for (int j = 0; j < childNodes.getLength(); j++) {  
  Node childNode = childNodes.item(j);  
  // 如果这个节点属于Element ,再进行取值  
  if (childNode instanceof Element) {  
  // System.out.println("子节点名为:"+childNode.getNodeName()+"相对应的值为"+childNode.getFirstChild().getNodeValue());  
  System.out.println("子节点名为:" + childNode.getNodeName()  
  + "相对应的值为" + childNode.getFirstChild().getNodeValue());  
  }  
  }  
  }  
  
  public static void main(String[] args) throws Exception {  
  JavaReadXml parse = new JavaReadXml();  
  
  // 我的XML文件  
  parse.viewXML("person.xml");  
  }  
 
}  



<?xml version="1.0" encoding="UTF-8"?>  
<book>
<person>  
<first>wang</first>  
<last>laohu</last>  
<age>25</age>  
<version>中国邮电出版社</version>  
</person>  
<person>  
<first>li</first>  
<last>junjia</last>  
<age>24</age>  
<version>清华大学出版社</version>  
</person>
</book> 






package org.showxml;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

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

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;


public class ReadXml {

   
     public ReadXml() {
            //(1)得到DOM解析器的工厂实例
            DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();
            //得到javax.xml.parsers.DocumentBuilderFactory;类的实例就是我们要的解析器工厂
            try  {
                //(2)从DOM工厂获得DOM解析器
                DocumentBuilder dombuilder=domfac.newDocumentBuilder();
                //通过javax.xml.parsers.DocumentBuilderFactory实例的静态方法newDocumentBuilder()得到DOM解析器
                //(3)把要解析的XML文档转化为输入流,以便DOM解析器解析它
                InputStream is=new FileInputStream("/home/core/Workspace/ShowXml/Books.xml");  //xml 的路径         
                //(4)解析XML文档的输入流,得到一个Document
                Document doc=dombuilder.parse(is);
                //由XML文档的输入流得到一个org.w3c.dom.Document对象,以后的处理都是对Document对象进行的
                //(5)得到XML文档的根节点
                Element root=doc.getDocumentElement();
                //在DOM中只有根节点是一个org.w3c.dom.Element对象。
                //(6)得到节点的子节点
                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("xml里面的name标签值:"+name1);
                                    }
                                    if(node.getNodeName().equals("price")) {
                                        String price=node.getFirstChild().getNodeValue();
                                        System.out.println("xml里面的price标签值:"+price);
                                    }
                               // }
                            }
                           
                            //
                        }
                    }//(6)这是用一个org.w3c.dom.NodeList接口来存放它所有子节点的,还有一种轮循子节点的方法,后面有介绍
                }
            } catch (ParserConfigurationException e)  {
                e.printStackTrace();
            } catch (FileNotFoundException e)  {
                e.printStackTrace();
            } catch (SAXException e)  {
                e.printStackTrace();
            } catch (IOException e)  {
                e.printStackTrace();
            }
        }

         public static void main(String[] args) {
           
             new ReadXml();
        }
}


<?xml version="1.0" encoding="UTF-8"?>
<books>
    <book>
        <name>测试</name>
        <price>111</price>
    </book>
<book>
        <name>我的博客</name>
        <price>222</price>
    </book>
</books>



package org.show;

import java.io.File;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

public class ShowXml {
    public static void main (String argv []){
    try {
            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
            Document doc = docBuilder.parse (new File("book.xml"));
            // normalize text redivsentation          
            doc.getDocumentElement ().normalize ();
            System.out.println ("Root element of the doc is " + doc.getDocumentElement().getNodeName());
          
            NodeList listOfPersons = doc.getElementsByTagName("person");
            int totalPersons = listOfPersons.getLength();
            System.out.println("Total no of people : " + totalPersons);

            for(int s=0; s<listOfPersons.getLength() ; s++){
                Node firstPersonNode = listOfPersons.item(s);
                if(firstPersonNode.getNodeType() == Node.ELEMENT_NODE){
                    Element firstPersonElement = (Element)firstPersonNode;
                    //-------                  
                    NodeList firstNameList = firstPersonElement.getElementsByTagName("first");
                    Element firstNameElement = (Element)firstNameList.item(0);

                    NodeList textFNList = firstNameElement.getChildNodes();
                    System.out.println("First Name : " +
                           ((Node)textFNList.item(0)).getNodeValue().trim());

                    //-------                  
                    NodeList lastNameList = firstPersonElement.getElementsByTagName("last");
                    Element lastNameElement = (Element)lastNameList.item(0);

                    NodeList textLNList = lastNameElement.getChildNodes();
                    System.out.println("Last Name : " +
                           ((Node)textLNList.item(0)).getNodeValue().trim());

                    //----                  
                    NodeList ageList = firstPersonElement.getElementsByTagName("age");
                    Element ageElement = (Element)ageList.item(0);

                    NodeList textAgeList = ageElement.getChildNodes();
                    System.out.println("Age : " + ((Node)textAgeList.item(0)).getNodeValue().trim());

                    //------

                }//end of if clause

            }//end of for loop with s var

        }
        catch (SAXParseException err) {
               System.out.println ("** Parsing error" + ", line "
                                          + err.getLineNumber () + ", uri " + err.getSystemId ());
               System.out.println(" " + err.getMessage ());

        }
        catch (SAXException e) {
                Exception x = e.getException ();
                ((x == null) ? e : x).printStackTrace ();

        }
        catch (Throwable t) {
                t.printStackTrace ();
        }
        //System.exit (0);
    }//end of main

}


<?xml version="1.0" encoding="UTF-8"?>
<book>
<person>
  <first>Kiran</first>
  <last>Pai</last>
  <age>22</age>
</person>
<person>
  <first>Bill</first>
  <last>Gates</last>
  <age>46</age>
</person>
<person>
  <first>Steve</first>
  <last>Jobs</last>
  <age>40</age>
</person>
</book>

分享到:
评论

相关推荐

    Java读写xml,word,xml文件(防乱码)

    ### Java读写XML、Word与TXT文件:去除乱码问题详解 #### 一、引言 在实际开发过程中,我们经常需要处理各种类型的文件,包括XML、Word文档以及普通的文本文件(如TXT)。这些文件在读写过程中经常会遇到乱码问题,...

    java读写xml文件

    ### Java读写XML文件知识点详解 #### 一、概述 在Java编程中,对XML文件进行读取与写入是一项非常常见的任务。XML(可扩展标记语言)是一种用于标记数据的语言,非常适合用来存储和传输数据。Java提供了多种API来...

    java读取xml文件

    Java 读取 XML 文件是 Java 开发中常见的一项任务,XML(eXtensible Markup Language)作为一种可扩展标记语言,广泛用于数据交换、配置存储等领域。本教程将深入讲解如何在 Java 中处理 XML 文件,同时涉及 XML 的 ...

    用java读取xml文件的四种方法

    要读取XML文件,Java提供了多种方法。以下是四种常用的方法,每种都有其适用场景和特点: 1. **DOM解析器(Document Object Model)** DOM解析器将整个XML文件加载到内存中,创建一个树形结构,允许我们通过节点...

    使用Java读取XML配置文件

    使用 Java 读取 XML 配置文件 Java 语言和 XML 技术可以说是黄金组合,网上已经有很多文章介绍 XML 在电子商务中的数据交换的作用。但是在平时系统开发中,我们不一定都用到数据交换,是否无法使用 XML?当然不是...

    java读取XMl数据

    以上就是Java读取XML数据的主要方法。选择哪种方式取决于具体的需求,如处理大型XML文件时,SAX和StAX更为高效;而如果需要频繁查询和修改XML结构,DOM和DOM相关的库可能更适合。在实际开发中,可以根据项目规模、...

    java 读取xml文件生成树形图

    在Java编程中,读取XML文件并将其转换为树形结构是一种常见的操作,尤其是在处理配置文件、数据交换或解析XML文档时。以下是一篇详细解释如何实现这一过程的文章。 首先,我们需要了解XML(eXtensible Markup ...

    Java读写xml java 读写xml文件操作, 简单易懂

    ### Java读写XML文件操作详解 在现代软件开发中,XML(可扩展标记语言)是一种广泛使用的数据交换格式,尤其在处理配置文件、数据存储以及跨平台数据交换时显得尤为重要。Java提供了多种读写XML文件的方法,包括SAX...

    java读取XML文件内容的四种方法[归类].pdf

    Java 读取 XML 文件内容的四种方法 Java 语言提供了多种方法来读取 XML 文件内容,以下是四种常见的方法: 1. DOM(Document Object Model) DOM 是一种基于树的模型,它将 XML 文档表示为一个层次结构的节点或...

    java读写xml文件的方法

    ### Java读写XML文件的方法详解 #### 一、概述 在Java编程中,XML(Extensible Markup Language,可扩展标记语言)是一种广泛使用的数据交换格式。由于其良好的跨平台特性和自描述性,使得XML成为了许多应用程序...

    xml.rar_java xml_java读写xml

    三、Java读取XML 1. DOM方式读取: 使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`来创建DOM对象,然后通过`getElementsByTagName`、`getAttribute`等方法获取元素和属性。 2. SAX方式...

    java读取XML(JDOM)

    Java读取XML文件是开发过程中常见的任务,JDOM是一个用于处理XML文档的Java库,它提供了方便、高效的方式来创建和操作XML数据。本篇将详细讲解如何使用JDOM来读取XML文件,以及相关的源码解析。 首先,我们需要了解...

    java读取XML内容源代码

    在Java编程中,读取XML(eXtensible Markup Language)文件内容是一项常见的任务,尤其在处理配置数据、数据交换或者存储结构化信息时。XML因其可读性强、结构清晰的特点,被广泛应用于各种场景。本篇文章将详细介绍...

    Java读取xml文件的四种方法.doc

    Java 读取 XML 文件的四种方法 在 Java 中读取 XML 文件有多种方法,本文将介绍四种常见的方法,分别使用 DOM、DOM4J、JDOM 和 SAX 解析器。 第一种方法:使用 DOM DOM(Document Object Model)是一种树形结构,...

    java读取xml文件生成文件

    Java语言在处理XML文件时,提供了丰富的API和库,使得我们可以轻松地读取、解析、修改和生成XML文档。在给定的场景中,我们主要关注如何使用Java来读取XML文件并根据需求生成新的文件。以下是关于这个主题的详细说明...

    java写XML文件和读取XML文件

    二、Java读取XML文件 1. 使用DOM解析: 读取XML文件时,首先会将整个XML文档加载到内存中的DOM树,然后通过API遍历和访问各个节点。 示例代码: ```java import javax.xml.parsers.DocumentBuilder; import javax....

    java读取xml用到的jar包集合

    在“java读取XML用到的jar包集合”中,包含了9个关键的JAR文件,它们提供了处理XML所需的API和功能。以下是这些JAR文件可能包含的重要知识点: 1. **JAXB (Java Architecture for XML Binding)** JAXB是Java标准版...

    Java读取xml文件中oracle数据库连接

    在Java编程中,读取XML文件并从中获取Oracle数据库连接是一项常见的...以上就是关于"Java读取xml文件中oracle数据库连接"的相关知识,希望对您有所帮助。在实际项目中,可能还需要考虑异常处理、连接池管理等高级话题。

Global site tag (gtag.js) - Google Analytics