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 name) {
    //结点序号从0开始
    int size = name.split("\\.").length;

    String[] parms =name.split("\\.");
        return parms;
  }

二、获取对应结点的值

2.1、结点为<name valueName=”value123”>的形式

 /**
   * abc.def.i结点下有个结点为:
   * <name valueName="value123">
   * 获取对应结点的value<br>
   * @param name 结点的值(name,是不包含root结点, 使用"."拼接的, ie: abc.def.i)
   * @param defaultName 没有获取到该节点内容, 返回默认值
   * @return
   */
  public synchronized String getPropertyValue(String name, String valueName) {
    //获取根结点对象
    Element element = doc.getRootElement();
    //获取各级结点对应的属性
    String[] parms = parsePropertyName(name);
    for (String parm : parms) {
      element = element.getChild(parm);
    }
    //得到无儿子结点的element的属性值
    return element.getAttributeValue(valueName);
  }

2.2. 结点为 <i>8</i>的形式

首先从缓存中获取改改结点的值, 如果没有,在从配置文件中读取,

/**
   * 获取结点的值
   * <i>8</i>
   * @param name 叶子结点的值(name,是不包含root结点, 使用"."拼接的, ie: abc.def.i)
   * @return
   */
  public synchronized String getProperty(String name) {
    //先从缓存中获取
    String value = cacheMap.get(name);
    if (value != null) {
      return value;
    }

    Element element = getElementByName(name);
    if (element == null) {
      return null;
    }
    //获取value
    value = element.getText();
    //缓存
    cacheMap.put(name, value);
    return value;
  }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • 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.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 对象序列化 NIO NIO2详细介绍及解析

    Java 对象序列化 NIO NIO2详细介绍及解析 概要: 对象序列化 对象序列化机制允许把内存中的Java对象转换成与平台无关的二进制流,从而可以保存到磁盘或者进行网络传输,其它程序获得这个二进制流后可以将其恢复成原来的Java对象. 序列化机制可以使对象可以脱离程序的运行而对立存在 序列化的含义和意义 序列化 序列化机制可以使对象可以脱离程序的运行而对立存在 序列化(Serialize)指将一个java对象写入IO流中,与此对应的是,对象的反序列化(Deserialize)则指从IO流中恢

  • Java使用SAX解析xml的示例

    一.SAX解析xml简介 SAX是Simple API for Xml的简写,主要功能是用于对xml文档进行解析.由于该方式采用的是事件驱动(callback回调机制)解析方式,所以有速度快.占内存少的优点,当然这些优点也仅限于xml的读取操作,SAX是无法对读取的XML元素进行修改的.如果要修改节点元素则需要使用DOC方式进行将xml文件读取,它会将xml读取成document树结构对象,这样可用对节点元素进行编辑操作:DOC方式的缺点也比较明显:占内存大.解析速度较慢. 所以仅用于读取xml

  • Java中documentHelper解析xml获取想要的数据

    目录 获取单节点数据 获取数组节点数据 webservice接口的入参和出参都是xml格式的数据,网上有很多方法,下面我将使用documentHelper工具来解析xml格式的数据,获取到自己想要的数据 获取单节点数据 假设我们接口调用成功,出参类似以下格式 <treatyroot> <returncode>0000</returncode> <message>接口调用成功</message> </treatyroot> 这是我们就可

  • maven中pom.xml详细介绍

    POM 代表工程对象模型.它是使用 Maven 工作时的基本组建,是一个 xml 文件.它被放在工程根目录下,文件命名为 pom.xml. POM 包含了关于工程和各种配置细节的信息,Maven 使用这些信息构建工程. POM 也包含了目标和插件.当执行一个任务或者目标时,Maven 会查找当前目录下的 POM,从其中读取所需要的配置信息,然后执行目标.能够在 POM 中设置的一些配置如下: project dependencies plugins goals build profiles pr

  • java实现简单解析XML文件功能示例

    本文实例讲述了java实现简单解析XML文件功能.分享给大家供大家参考,具体如下: package demo; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException;

  • Java与Http协议的详细介绍

    Java与Http协议的详细介绍 引言      http(超文本传输协议)是一个基于请求与响应模式的.无状态的.应用层的协议,常基于TCP的连接方式.HTTP协议的主要特点是:      1.支持客户/服务器模式.      2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径.由于HTTP协议简单,通信速度很快.      3.灵活:HTTP允许传输任意类型的数据对象.类型由Content-Type加以标记.      4.无连接:即每次连接只处理一个请求,处理完客户的请求,并收到客

  • Mongodb3.0.5 副本集搭建及spring和java连接副本集配置详细介绍

    Mongodb3.0.5 副本集搭建及spring和java连接副本集配置详细介绍 一.基本环境: mongdb3.0.5数据库 spring-data-MongoDB-1.7.2.jar mongo-Java-driver-3.0.2.jar Linux-redhat6.3 tomcat7 二.搭建mongodb副本集: 1.  分别在三台linux系统机上安装mongodb,(为避免和机器上原有的mongodb端口冲突,这里设为57017): 192.168.0.160 192.168.0.

  • Java编程中的构造函数详细介绍

    本文主要是为新手.对java语言感兴趣的人和那些没有系统学习过java基础知识的人进行一个总结,在文章中对构造函数进行了较为详细的说明和讨论,也包含了我个人对于java面向对象中构造函数的一些看法.希望走在java学习道路上的同行者可以有一个较为清晰的认知和理解.当然仅为个人观点,水平有限,不足之处,还请大家多多指出,互相交流学习. 1.构造函数的概念 很多java新手谈到构造函数就会犯晕,我们先来看看什么是构造函数. 首先,构造函数是函数的一种特殊形式,特殊在哪里?构造函数中不需要定义返回类型

  • Java中ArrayList的使用详细介绍

    目录 1.ArrayList类 1.1ArrayList类概述 1.2ArrayList类常用方法 1.2.1构造方法 1.2.2成员方法 1.2.3示例代码 1.3ArrayList存储字符串并遍历 1.3.1案例需求 1.3.2代码实现 1.4ArrayList存储学生对象并遍历 1.4.1案例需求 1.4.2代码实现 1.5ArrayList存储学生对象并遍历升级版 1.5.1案例需求 1.5.2代码实现 总结 1.ArrayList类 1.1ArrayList类概述 在java中,我们会

随机推荐