java代码用dom4j解析xml文件的简单操作

时间: 2016/02/17

目标:为telenor的ALU Femto接口写一个采集xml文件并解析出locationName标签里的值,然后更新到数据库中。

从网上搜了下,有四种常用的解析xml的方式,包括DOM,JAXD,Dom4J,SAX(simple api for xml).我正好有Dom4j的jar包,就选择了Dom4j来解析xml。

前半截对xml的解析测试成功了。后面的数据库的连接,把数据更新到数据库的操作没有测试。对应的xml文件的行数有点多,没法上传,另写一个xml的文档上传。

  1 package com.example.xml.dom4h;
  2
  3 import java.io.File;
  4 import java.sql.Connection;
  5 import java.sql.DriverManager;
  6 import java.sql.Statement;
  7 import java.util.Iterator;
  8 import java.util.List;
  9
 10 import javax.xml.parsers.DocumentBuilder;
 11 import javax.xml.parsers.DocumentBuilderFactory;
 12
 13 import org.dom4j.Document;
 14 import org.dom4j.Element;
 15 import org.dom4j.io.DOMReader;
 16 import org.dom4j.io.SAXReader;
 17
 18 /**
 19 * dom4j框架学习: 读取并解析xml
 20 *
 21 *
 22 */
 23 public class Dom4j_parse {
 24 public static void main(String[] args) throws Exception {
 25 SAXReader saxReader = new SAXReader();
 26
 27 Document document = saxReader.read(new File("snapshot-Automatic-2016-02-09-15-53-00-1.xml"));
 28 String bsrName = "";
 29 String bsrId = "";
 30 String region = "";
 31 String city = "";
 32 String address ="";
 33 String classification = "";
 34 // 获取根元素
 35 Element root = document.getRootElement();
 36 System.out.println("Root: " + root.getName());
 37
 38 // 获取所有子元素
 39 List<Element> childList = root.elements();
 40 System.out.println("total child count: " + childList.size());
 41
 42 // 获取特定名称的子元素
 43 Element femtoCluster = root.element("FemtoCluster");
 44 List<Element> childList2 = femtoCluster.elements("Femto");
 45
 46 System.out.println("locationname child: " + childList2.size());
 47 //对每一个femto的locationName解析
 48 for(int i=0; i < childList2.size(); i++){
 49 Element femtoElement = childList2.get(i);
 50 String femtoId= femtoElement.attributeValue("id");
 51 Element attributeElement = femtoElement.element("attributes");
 52
 53 //step1 对bsc的名称和id先处理
 54
 55 Element bsrNameElement = attributeElement.element("bSRName");
 56 Element bsridElement = attributeElement.element("bsrId");
 57 bsrName = bsrNameElement.getTextTrim();
 58 bsrId = bsridElement.getTextTrim();
 59 System.out.println( " bstname :"+bsrNameElement.getTextTrim()+ " ,bsrid :"+bsridElement.getTextTrim());
 60 //step2 对locatin的处理
 61 //用下划线把值分割成三部分,第一部分是region,第二部分是address,第三部分是city
 62 Element locationElement =    attributeElement.element("locationName");
 63 String allString = locationElement.getTextTrim();
 64 //如果有值,安装上面的三部分解析,如果没值,给region,city为空。
 65 if(!allString.isEmpty() && allString !=null && allString !="" ){
 66 //allString有值的时候
 67 String[] allStringArray = allString.split("_");
 68 region = allStringArray[0];
 69 city = allStringArray[2];
 70 address = allStringArray[1];
 71 if(city.isEmpty() ){
 72 classification = "RR";
 73 }else{
 74 classification = "U_SB";
 75 }
 76 System.out.println( " region :"+ region + " , city :"+city +" , address:"+ address);
 77 }else{
 78 //allString没有值得时候
 79 region = "";
 80 city = "";
 81 address = "";
 82 classification = "RR";
 83 System.out.println( " region :"+ region + " , city :"+city +" , address:"+ address);
 84 }//end if
 85 //对这些数据插入到数据库中
 86 /*
 87 * update pm4h_db.mo_moentity t set (region,city,address,classification) = (region,city,address,classification)
 88 * where t.moentityid = bsrId
 89 *
 90 * */
 91 }// end one element
 92 // 获取名字为指定名称的第一个子元素
 93 //    Element firstWorldElement = root.element("world");
 94 //    // 输出其属性
 95 //    System.out.println("first World Attr: "
 96 //    + firstWorldElement.attribute(0).getName() + "="
 97 //    + firstWorldElement.attributeValue("name"));
 98 //
 99 //    System.out.println("迭代输出-----------------------");
100 //    // 迭代输出
101 //    for (Iterator iter = root.elementIterator(); iter.hasNext();) {
102 //    Element e = (Element) iter.next();
103 //    System.out.println(e.attributeValue("name"));
104 //
105 //    }
106
107 // System.out.println("用DOMReader-----------------------");
108 //    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
109 //    DocumentBuilder db = dbf.newDocumentBuilder();
110 //    // 注意要用完整类名
111 //    org.w3c.dom.Document document2 = db.parse(new File("students.xml "));
112 //
113 //    DOMReader domReader = new DOMReader();
114 //
115 //    // 将JAXP的Document转换为dom4j的Document
116 //    Document document3 = domReader.read(document2);
117 //
118 //    Element rootElement = document3.getRootElement();
119 //
120 //    System.out.println("Root: " + rootElement.getName());
121 //连接数据库,并执行更新sql的方法
122
123
124 }
125
126 public void updateFemtoData(String region1,String city1,String address1,String classification1,String bsrid1) {
127 try{
128 //0 拼sql语句
129
130 //modify
131 String sql= " update pm4h_db.mo_moentity t set t.region =" + region1
132 +" ,city = "+ city1
133 +" , classification= "+ classification1
134 +" ,address = "+ address1
135 + " where t.moentityid = " +bsrid1
136 ;
137 //1.加载驱动
138 Class.forName("oracle.jdbc.driver.OracleDriver");
139 //2 建立连接
140 //modify ip and
141 Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@10.218.6.165:1521:mos5200","oracle","oracle");
142 Statement st = ct.createStatement() ;
143 int rs = st.executeUpdate(sql);
144 }catch(Exception e){
145 e.printStackTrace();
146 }finally{
147
148 if(true){
149 //    st.close();
150 //    ct.close();
151 }
152 }
时间: 2024-10-22 06:28:10

java代码用dom4j解析xml文件的简单操作的相关文章

java中采用dom4j解析xml文件

一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4j解析xml的具体操作. 二.代码详情    dom4j是一个第三方开发组开发出的插件,所以在我们使用dom4jf的时候我们要去下载一下dom4j对应版本的jar导入在我们项目中.  1)xml文件: <?xml version="1.0" encoding="UTF-8&

java中利用dom4j解析XML文件

官网下载Dom4j地址:https://dom4j.github.io/ 注意:使用Dom4j开发,需下载dom4j相应的jar文件 题目:后台利用dom4j解析student.xml文件,并返回List<Student>集合 需要解析的XML: <?xml version="1.0" encoding="UTF-8"?> <classes> <class name="ST01"> <stud

【java项目实战】dom4j解析xml文件,连接Oracle数据库

简介 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方,我们还是看一下官方给出的解释.如下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT等语言的库.它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP等编程标准. 特点 dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用的特点,同时它也是一个开放源代码的软件.如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,例

转:在java中使用dom4j解析xml

在java中使用dom4j解析xml 虽然Java中已经有了Dom和Sax这两种标准解析方式 但其操作起来并不轻松,对于我这么一个初学者来说,其中部分代码是活生生的恶心 为此,伟大的第三方开发组开发出了Jdom和Dom4j等工具 鉴于目前的趋势,我们这里来讲讲Dom4j的基本用法,不涉及递归等复杂操作 Dom4j的用法很多,官网上的示例有那么点儿晦涩,这里就不写了 首先我们需要出创建一个xml文档,然后才能对其解析 xml文档: <?xml version="1.0" encod

用DOM4J解析XML文件案例

用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图: 1.xml文件 <?xml version="1.0" encoding="UTF-8"?> <class> <student> <name>张三</name> <sid>111111</sid> </student> <stude

JAVA中使用DOM解析XML文件

JAVA中使用DOM解析XML文件: 创建DocumentBuilderFactory的对象                                 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 创建DocumentBuilder对象 通过documentBuilder对象的parser方法加载xml文件到当前项目下 获取所有XML文件内节点的集合    getElementsByTagName()方

使用DOM4J解析XMl文件与读取XML文件

XML文件 1 <?xml version="1.0" encoding="UTF-8"?> 2 <bookstore> 3 <book id="1"> 4 <name>冰与火之歌</name> 5 <author>乔治马丁</author> 6 <year>2014</year> 7 <price>89</price&g

在java项目中怎样利用Dom4j解析XML文件获取数据

在曾经的学习.net时常常会遇到利用配置文件来解决项目中一些须要常常变换的数据.比方数据库的连接字符串儿等.这个时候在读取配置文件的时候.我们一般会用到一个雷configuration,通过这个类来进行直接读取,能够说这是程序中直接封装好的,包含配置文件里书写的格式等等.那么,假设.想要在配置文件里写一些其它的数据,直接以XML文件的格式进行书写.这个时候在后台怎样读取XML文件里的数据呢?这里利用Dom4j来解析XML文件里连接oracle数据库的xml数据. 在使用之前,首先要在自己的项目中

在java项目中如何利用Dom4j解析XML文件获取数据

在以前的学习.net时经常会遇到利用配置文件来解决项目中一些需要经常变换的数据,比如数据库的连接字符串儿等.这个时候在读取配置文件的时候,我们通常会用到一个雷configuration,通过这个类来进行直接读取,可以说这是程序中直接封装好的,包括配置文件中书写的格式等等.那么,如果,想要在配置文件中写一些其他的数据,直接以XML文件的格式进行书写,这个时候在后台如何读取XML文件中的数据呢?这里利用Dom4j来解析XML文件中连接oracle数据库的xml数据. 在使用之前,首先要在自己的项目中