时间: 2016/02/17

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

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

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

 package com.example.xml.dom4h;

 import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.Iterator;
import java.util.List; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.DOMReader;
import org.dom4j.io.SAXReader; /**
* dom4j框架学习: 读取并解析xml
*
*
*/
public class Dom4j_parse {
public static void main(String[] args) throws Exception {
SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File("snapshot-Automatic-2016-02-09-15-53-00-1.xml"));
String bsrName = "";
String bsrId = "";
String region = "";
String city = "";
String address ="";
String classification = "";
// 获取根元素
Element root = document.getRootElement();
System.out.println("Root: " + root.getName()); // 获取所有子元素
List<Element> childList = root.elements();
System.out.println("total child count: " + childList.size()); // 获取特定名称的子元素
Element femtoCluster = root.element("FemtoCluster");
List<Element> childList2 = femtoCluster.elements("Femto"); System.out.println("locationname child: " + childList2.size());
//对每一个femto的locationName解析
for(int i=0; i < childList2.size(); i++){
Element femtoElement = childList2.get(i);
String femtoId= femtoElement.attributeValue("id");
Element attributeElement = femtoElement.element("attributes"); //step1 对bsc的名称和id先处理 Element bsrNameElement = attributeElement.element("bSRName");
Element bsridElement = attributeElement.element("bsrId");
bsrName = bsrNameElement.getTextTrim();
bsrId = bsridElement.getTextTrim();
System.out.println( " bstname :"+bsrNameElement.getTextTrim()+ " ,bsrid :"+bsridElement.getTextTrim());
//step2 对locatin的处理
//用下划线把值分割成三部分,第一部分是region,第二部分是address,第三部分是city
Element locationElement = attributeElement.element("locationName");
String allString = locationElement.getTextTrim();
//如果有值,安装上面的三部分解析,如果没值,给region,city为空。
if(!allString.isEmpty() && allString !=null && allString !="" ){
//allString有值的时候
String[] allStringArray = allString.split("_");
region = allStringArray[0];
city = allStringArray[2];
address = allStringArray[1];
if(city.isEmpty() ){
classification = "RR";
}else{
classification = "U_SB";
}
System.out.println( " region :"+ region + " , city :"+city +" , address:"+ address);
}else{
//allString没有值得时候
region = "";
city = "";
address = "";
classification = "RR";
System.out.println( " region :"+ region + " , city :"+city +" , address:"+ address);
}//end if
//对这些数据插入到数据库中
/*
* update pm4h_db.mo_moentity t set (region,city,address,classification) = (region,city,address,classification)
* where t.moentityid = bsrId
*
* */
}// end one element
// 获取名字为指定名称的第一个子元素
// Element firstWorldElement = root.element("world");
// // 输出其属性
// System.out.println("first World Attr: "
// + firstWorldElement.attribute(0).getName() + "="
// + firstWorldElement.attributeValue("name"));
//
// System.out.println("迭代输出-----------------------");
// // 迭代输出
// for (Iterator iter = root.elementIterator(); iter.hasNext();) {
// Element e = (Element) iter.next();
// System.out.println(e.attributeValue("name"));
//
// } // System.out.println("用DOMReader-----------------------");
// DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// DocumentBuilder db = dbf.newDocumentBuilder();
// // 注意要用完整类名
// org.w3c.dom.Document document2 = db.parse(new File("students.xml "));
//
// DOMReader domReader = new DOMReader();
//
// // 将JAXP的Document转换为dom4j的Document
// Document document3 = domReader.read(document2);
//
// Element rootElement = document3.getRootElement();
//
// System.out.println("Root: " + rootElement.getName());
//连接数据库,并执行更新sql的方法 } public void updateFemtoData(String region1,String city1,String address1,String classification1,String bsrid1) {
try{
//0 拼sql语句 //modify
String sql= " update pm4h_db.mo_moentity t set t.region =" + region1
+" ,city = "+ city1
+" , classification= "+ classification1
+" ,address = "+ address1
+ " where t.moentityid = " +bsrid1
;
//1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2 建立连接
//modify ip and
Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@10.218.6.165:1521:mos5200","oracle","oracle");
Statement st = ct.createStatement() ;
int rs = st.executeUpdate(sql);
}catch(Exception e){
e.printStackTrace();
}finally{ if(true){
// st.close();
// ct.close();
}
}

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

  1. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

  2. java中利用dom4j解析XML文件

    官网下载Dom4j地址:https://dom4j.github.io/ 注意:使用Dom4j开发,需下载dom4j相应的jar文件 题目:后台利用dom4j解析student.xml文件,并返回Li ...

  3. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

  4. java使用dom4j解析xml文件

    关于xml的知识,及作用什么的就不说了,直接解释如何使用dom4j解析.假如有如下xml: dom4j解析xml其实很简单,只要你有点java基础,知道xml文件.结合下面的xml文件和java代码, ...

  5. Java进阶(二十七)使用Dom4j解析XML文件

    使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...

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

    简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...

  7. 转:在java中使用dom4j解析xml

    JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...

  8. 用DOM4J解析XML文件案例

    用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图:

  9. Dom4j解析Xml文件,Dom4j创建Xml文件

    Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...

随机推荐

  1. 使用UGUI实现拖拽功能(拼图小游戏)

    实现方式 1.引入UGUI自带的事件系统 UnityEngine.EventSystems 2.为我们的类添加接口 IBeginDragHandler, IDragHandler, IEndDragH ...

  2. Android ListView 无法响应onItemClick事件

    当在布局文件中加入了Button.ImageButton.CheckBox.RadioButton等控件(也就是Button或者Checkable的子类控件)的时候,listView是无法响应onIt ...

  3. Android 安装镜像

    1. 关机 2. 按住音量减键和电源键,直到进入fastboot模式 3. 连接上PC 4. PC端输入sudo fastboot devices验证已识别到设备 5. PC端输入sudo fastb ...

  4. PHP关于数组缓存JSON、serialize、var_export的说明

    1.JSONJSON缓存变量主要是使用json_encode和json_decode函数,其中json_encode可以将变量变成文本格式存储到文件. // Store cache file_put_ ...

  5. 飞雪桌面日历软件 V8.6 免费绿色版

    软件名称: 飞雪桌面日历软件软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / Win2003 / WinXP / Win2008软件大小: 4MB图片预览: 软件简介: ...

  6. sublime 配置 python IDE

    安装sublime下载地址:http://www.sublimetext.com/,请自行根据系统版本进行下载.下载好之后直接安装即可. 汉化包 汉化包下载: 汉化方法: 1.运行sublime te ...

  7. NYOJ-1036 非洲小孩(贪心)

    非洲小孩 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 家住非洲的小孩,都很黑.为什么呢?第一,他们地处热带,太阳辐射严重.第二,他们不经常洗澡.(常年缺水,怎么洗 ...

  8. mybatis遇见的奇葩问题(返回null)

    1.问题描述 select 语句没有问题,执行完毕后通过日志也可以看出 select到数据了,但是拿到的值就是null 2.原因 原来是有人将对象变量命名给改了,导致select到结果后不能映射成为对 ...

  9. samba配置(基础版)

    1.  下载及安装Samba 推荐用yum来安装,这样它可以自己解决包的依赖关系,省时.省事又方便.一条命令搞定: yum -y install samba 2.  配置Samba 关于Samba的配 ...

  10. 自定义控件之--继承控件(圆形TextView)

    师从郭大,自学于心,继承控件无疑就是继承自现有控件,保持继承的控件的属性并进行必要的扩展.   比如下面这个自定义控件,它就保持了TextView的属性,并对TextView的外观进行必要的修改该来适 ...