`
MungBeanCake
  • 浏览: 2778 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java之xml解析

阅读更多

        项目里要用到xml解析,所以需要写一个java的xml解析工具类。因此特地去网上看了一下java,解析xml的例子,发现网上找到的大都只有代码例子,在实际的过程中也出了不少问题,所以想写一篇关于xml解析的基础文章,记录一下自已在学习过程中遇到的一些问题。

        DOM(文档对象模型)是HTML和XML文档的编程接口规范,与平台和语言无关,模型定义了HTML和XML在内存中的逻辑结构,提供了访问和存取HTML和XML文档的方法,可以说要自由的操纵XML文档就要用到DOM规范。

       解析XML的第一步是要获得一个文档解析器,将一个XML文档转化为一个DOM文档。Document接口描述了对应于整个XML的文档树,并提供了对数据的访问

                 // 先获取产生DocumentBuilder工厂

                //在通过这个工厂产生一个XML文档解析器(DocumentBuilder)

               DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

               DocumentBuilder db = dbf.newDocumentBuilder();

               // 这个Document就是一个XML文件在内存中的镜像

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

             doc = db.parse(new File(xmlFile));

       在一个XML文档里只一个根元素,获取的方法为   Element element = doc.getDocumentElement();

       在XML中获取一个节点可以根据其节点的名称获取  

              NodeList nodeList = doc.getElementsByTagName(nodeName);

例如在这里获取node1里数据:
 

写道
public class OwnXmlReslove {

private Document doc = null;


   public void init(String filePath) throws Exception{
           File file = new File(filePath);
           DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
           DocumentBuilder builder = factory.newDocumentBuilder();
           doc = builder.parse(file);
      }

    public NodeList getHeadNode(String filePath,String nodeName) throws Exception{
            init(filePath);
            return doc.getElementsByTagName(nodeName);
     }

     public static void main(String[] args) {
         OwnXmlReslove xmlre = new OwnXmlReslove();
          try {
               NodeList nodelist =   xmlre.getHeadNode("D://PropertyRW/src/Wapper.xml", "classification");
              NodeList node = nodelist.item(0).getChildNodes();
              int length = node.getLength();
               for(int i = 0; i < length; i++){
                 Node no = node.item(i);
                      if(no instanceof Element){
                               System.out.println(no.getAttributes().getNamedItem("name").getNodeValue());
                               System.out.println(no.getAttributes().getNamedItem("ename").getNodeValue());
                               System.out.println(no.getAttributes().getNamedItem("id").getNodeValue());
                        }
                      }
             } catch (Exception e) {
                           e.printStackTrace();
                  }
    }
}

   这里的init()方法是获取一个xml解析器并把Document对象初始化。getHeadNode这个是因为在程序里会根据不同的名称获取不同的NodeList对象,所以我把它提取了出来。

   在main函数中 ,先获取标签名称为<classification>的文档对象,item(0)是获取集合的第一个对象。应该是要遍历获取但我这里在测试所以偷了一个小懒。再尝试获取<classification name="subject">的所有子节点。然后遍历他的所有子节点。然后判断node是否是一个元素节点,一个父节点的子节点可能有元素节点和文本节点等,这里我还不太清楚。除了元素节点和文本节点是否还有其他的节点。

 如果是元素节点那么通过getAttribute()方法获取当前节点的属性值,再根据名称的标签来获取元素的的值。如果需要获取node2节点里面的值那么还需要遍历一遍历node1节点,获取node1节点里的所有子节点,然后判断是否是元素节点,然后循环输出即可。

最后输出:

 

 

后来我在其他的文章里看到在循环遍历的时候有更好的写法,贴上来大家可以看下

写道
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);
                   }
             }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

       

  • 大小: 4.7 KB
  • 大小: 902 Bytes
0
4
分享到:
评论

相关推荐

    java xml解析工具类 java xml解析工具类

    java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析...

    java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xml

    java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava...

    java实现xml解析word文档代码实现

    Java 实现 XML 解析 Word 文档代码实现 基于给定的文件信息,我们可以总结出以下知识点: 1. Java 实现 XML 解析 Word 文档 Java 可以使用多种方式来解析 Word 文档,包括使用 Apache POI 库、Java2Word 库等。...

    java 解析xml 多级

    Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:...

    java心电图xml解析.zip

    Java XML解析是Java开发中的一项重要技能,尤其是在处理结构化数据时。XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于配置文件、数据交换和文档存储等领域。本压缩包“java心电图xml解析....

    JAVA 解析XML生成XML文档实例

    JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML

    java XML解析方式实现自动生成word文档

    本篇文章将详细探讨如何利用Java和XML解析来自动化创建Word文档。 首先,我们需要了解XML的结构。XML(Extensible Markup Language)是一种标记语言,它允许我们以结构化的方式存储数据。在生成Word文档时,我们...

    java 解析XML性能对比分析Demo

    本文将深入探讨几种不同的XML解析方法,并通过实际的“Java解析XML性能对比分析Demo”来展示它们的性能差异。我们将讨论DOM、SAX、JDOM、DOM4J和JAXB这五种解析器,以及它们各自的特点和适用场景。 1. DOM(文档...

    Java解析XML的jar包+四种解析方法

    java解析xml的四种方法的比较,还有四种方法所用到的jar包 附带程序例子 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML

    java解析xml字符串

    Java提供了多种库来解析和操作XML文档,其中JDOM(Java Document Object Model)是一个广泛使用的开源库,它提供了简单且强大的API来读取、创建和修改XML文档。 ### Java解析XML字符串 在给定的代码示例中,我们...

    java xml 解析包

    Java XML解析包主要指的是用于处理XML(eXtensible Markup Language)文档的库,它使得在Java程序中读取、写入、修改和操作XML变得简单。本篇将详细介绍使用Java进行XML解析的关键知识点,以dom4j-1.6.1为例。 1. *...

    Java解析XML工具类--(java源码)

    * 本类是专门解析XML文件的,主要用于为系统读取自己的配置文件时提供最方便的解析操作 * @author HX * */ public class XmlManager { /** * 得到某节点下某个属性的值 * @param element 要获取属性的...

    java大作业xml解析

    Java大作业中涉及的XML解析是一项重要的编程任务,XML(eXtensible Markup Language)是一种用于标记数据的语言,因其灵活性和可扩展性被广泛应用于数据存储、配置管理和数据交换。XML文件以.xml为后缀,其结构清晰...

    Java实现XML解析【JDom】

    Java中的XML解析是处理XML数据的关键技术,JDom是一个高效的、纯Java的XML处理库,它为Java开发者提供了便捷的方式来创建、修改和读取XML文档。在这个资源中,我们将探讨如何利用JDom来解析XML文件,并从MySQL数据库...

    java xml文件解析

    DOM4J是一个基于Java的高效XML解析库,它是对DOM和SAX API的一个简单而强大的封装。DOM4J提供了更简洁的API,使得XML的解析和操作更加容易。DOM4J已成为XML解析的一种流行选择。 ### 性能对比 不同解析方式之间的...

    XmlUtils.java xml解析工具包

    XML交互时方便进行XML格式转换,包含XML格式数据转换成list对象方法,参数拼接成XML方法

    JAVA 解析xml

    JAVA 解析xml多种方法 JAVA 解析xml多种方法 JAVA 解析xml多种方法 JAVA 解析xml多种方法 JAVA 解析xml多种方法 JAVA 解析xml多种方法 JAVA 解析xml多种方法

    JAVA解析XML示例

    本示例将介绍三种常见的Java XML解析方法:DOM、SAX和DOM4J,并通过比较它们的性能特点来帮助初学者理解不同解析器的适用场景。 1. DOM(Document Object Model)解析: DOM是W3C推荐的一种标准API,它将整个XML...

    java解析XML文件

    Java解析XML文件是Java开发中常见的一项任务,XML...DOM4J因其易用性和强大的功能,成为Java开发者处理XML的首选工具之一。在实际项目中,根据具体需求,可以选择使用DOM4J提供的各种API进行更复杂的数据处理和操作。

Global site tag (gtag.js) - Google Analytics