java servlet xml解析

xml文件格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<operationXml>
<trans>
<versionId>8a8a93b05ad07ded015aea9ac3480416</versionId>
<transType>ADD_USER</transType>
<transXml>
<id>8a8a93b05ad07ded015aea9ac3390413</id>
<userId>syn_michelle_xi_91990415</userId>
<appId>4028fb83507dd41701507dd614ec0003</appId>
<display>0</display>
<username>syn_michelle_xi_91990415</username>
<pwd>8a8a93b05ad07ded015aea9ac3390414</pwd>
<organId>O0000000000000025622</organId>
<organCode>8a8a93b05ad07ded015aea62f80b03c9</organCode>
<struId>S0000000000000037508</struId>
<struPath>rootId#1#S0000000000000000424#S0000000000000037508</struPath>
<parentOrganId>O0000000000000000436</parentOrganId><
parentOrganCode>0000000000110100000000466000000000002</parentOrganCode>
<name>王熙</name>
<organ_mobile>18600092536</organ_mobile>
<organ_email>[email protected]</organ_email>
<zjlx>0</zjlx><zjhm>360102198209190025</zjhm>
<rid></rid>
<unitname>中国民航科学技术研究院</unitname>
<unitbsdtid>D77B02867A594208AABE1C41E38B8A47</unitbsdtid>
<zzjgdm>400007439</zzjgdm>

<surveyleveltype>0</surveyleveltype>
<tyshxydm>121000004000074395</tyshxydm>
<prefecture>100000</prefecture>
<sfdlxxqy></sfdlxxqy>
</transXml>
</trans></operationXml>

java方法:

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

Map<String,String> map = new HashMap<String,String>();
JSONObject json = null;
List<User> saveUserList = new ArrayList<User>();
//String versionId = request.getParameter("versionId");
//String action = request.getParameter("action");
String versionId = "8a8a93b05ad07ded015aea9ac3480416";
String action = "get_syn";

// 初始化,该类为 用于对数据库操作
PostgisDAO pdao = new PostgisDAO();
pdao.initPostDB();

SynchronizeClient sc = new SynchronizeClient (UrlString);
System.out.println("action:" + action);// 此为通知中获取的action
System.out.println("versionId:" + versionId); // 此为通知中获取的versionId

String dataXml = sc.getTransXmlByVersionId(action, versionId);

if(!UtilMethod.isEmpty(dataXml)){
try {
Document document = DocumentHelper.parseText(dataXml);
Element rootEle = document.getRootElement();
Element trans = rootEle.element("trans");
//获取标识 参数
String backVersionId = trans.elementText("versionId");
String transType = trans.elementText("transType");

//获取用户信息
@SuppressWarnings("unchecked")

//这里的transXml标签可能有多个 所以用elements

List<Element> transXmlList = trans.elements("transXml");

for(Element transXml : transXmlList){

String id = transXml.elementText("id");
String userId = transXml.elementText("userId");
String appId = transXml.elementText("appId");
String display = transXml.elementText("display");
String username = transXml.elementText("username");
String pwd = transXml.elementText("pwd");
String organId = transXml.elementText("organId");
String organCode = transXml.elementText("organCode");
String struId = transXml.elementText("struId");
String struPath = transXml.elementText("struPath");
String parentOrganId = transXml.elementText("parentOrganId");
String parentOrganCode = transXml.elementText("parentOrganCode");
String name = transXml.elementText("name");
String organ_mobile = transXml.elementText("organ_mobile");
String organ_email = transXml.elementText("organ_email");
String zjlx = transXml.elementText("zjlx");
String zjhm = transXml.elementText("zjhm");
String rid = transXml.elementText("rid");
String unitname = transXml.elementText("unitname");
String unitbsdtid = transXml.elementText("unitbsdtid");
String zzjgdm = transXml.elementText("zzjgdm");
String surveyleveltype = transXml.elementText("surveyleveltype");
String tyshxydm = transXml.elementText("tyshxydm");
String prefecture = transXml.elementText("prefecture");
String sfdlxxqy = transXml.elementText("sfdlxxqy");

List<User> list_user = pdao.selectUserById(userId);
if(list_user.size() == 0){
User user = new User();
user.setUserName(userId);
user.setUserPassword(pwd);
user.setUserPhone(Long.parseLong(organ_mobile));
user.setUserMail(organ_email);
saveUserList.add(user);
}

}
//如果本系统中已经存在这该用户,那么 它不会添加到saveUserList中(即本系统中的不变)
Boolean result = pdao.saveUser(saveUserList);
if(result){
map.put("message", "同步成功");
map.put("type", "1");
}else{
map.put("message", "同步失败");
map.put("type", "0");
}
json = JSONObject.fromMap(map);

} catch (DocumentException | SQLException e) {
e.printStackTrace();
log.error("同步数据失败,新增本地用户失败", e);

}
}
// 设置响应类型
response.setContentType("application/json;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println(json.toString());

}

时间: 2024-08-05 07:06:51

java servlet xml解析的相关文章

Java数据库编程、Java与XML解析技术

Java数据库编程: 1. JDBC概述:JDBC(数据库连接)是Java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类库(位于java.sql和javax.sql包中).用JDBC开发的数据库  应用既可以跨操作系统平台,又可以跨数据库系统平台.    在JDBC的基本操作中,最常用的类和接口包括DriverManager,  Connection,  Statement,  PreparedStatement,  CallableStatement 和 Result

【Java】XML解析之SAX

SAX介绍 SAX是一种事件驱动的流式XML文件处理方式,区别与DOM方式的是不需要在内存中建一棵DOM树,而是根据读取XML时遇到的标签事件来顺序处理,因此具有速度快,内存占用上的优点. XML生成 代码如下: 1 package com.test.sax; 2 3 import javax.xml.transform.OutputKeys; 4 import javax.xml.transform.Result; 5 import javax.xml.transform.Transforme

Java中XML解析工具范例

1.直接代码部分: 1 import java.io.File; 2 import java.io.FileInputStream; 3 import java.util.List; 4 import org.jdom.Document; 5 import org.jdom.Element; 6 import org.jdom.input.SAXBuilder; 7 import org.xml.sax.InputSource; 8 9 /** 10 * 作用: XML解析工具类,其中的属性根据

Java笔记——XML解析

1 import java.io.File; 2 import java.io.IOException; 3 import javax.xml.parsers.DocumentBuilder; 4 import javax.xml.parsers.DocumentBuilderFactory; 5 import javax.xml.parsers.ParserConfigurationException; 6 import org.w3c.dom.Document; 7 import org.w

Java中Xml解析(四种方法)

1.DOM,Document Object Model,基于DOM的XML分析器将XML文档转换成一个对象模型的集合(DOC树),通过对此模型操作实现对XML文档数据的操作,可以在任何时候对XML文档的任何一部分数据进行访问. DOC强制使用树模型来访问XML文档中信息 很灵活,当XML文档较大时对内存需求比较高,而且对结构复杂的DOC树的遍历也很耗时,对机器要求比较高. // step 1: 获得dom解析器工厂(工作的作用是用于创建具体的解析器) DocumentBuilderFactory

java:xml解析

DOM.SAX.JDOM.DOM4J四种解析:https://www.cnblogs.com/longqingyang/p/5577937.html Java解析XML文件例子:https://blog.csdn.net/zflovecf/article/details/78908788 原文地址:https://www.cnblogs.com/ysq2018China/p/10360449.html

XML解析器

一.操作XML文档概述 1.如何操作XML文档 XML文档也是数据的一种,对数据的操作也不外乎是"增删改查".也被大家称之为"CRUD" C:Create: R:Retrieve: U:Update: D:Delete 2.XML解析技术 XML解析方式分为两种:DOM(Document Object Model)和SAX(Simple API for XML).这两种方式不是针对Java语言来解析XML的技术,而是跨语言的解析方式.例如DOM还在Javascrip

java学习----数据解析

在讲数据解析之前,由于笔者目前能力有限,所以我只能先讲一下XML解析,后面的时间会补上其他数据的解析 讲解目录: 1.何为数据解析 2.xml解析 3.Excel解析 4.json解析 一.何为数据解析 举个栗子----如果不同的程序之间需要通信,假如说A程序需要B程序做一件事,B程序说 我可以做这件事,但是你不需要给我必须的数据.我才能做这件事. 我们可以用下面一副图表示: 在上面这幅图中,两个数据的传输都是有数据格式的.我们要做的就是解析这种数据格式或者生成这种数据格式的数据 二.XML解析

java web.xml listener servlet 和filter的加载顺序

在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter. 最终得出的结论是:listener -> filter -> servlet 同时还存在着这样一种配置节:context-param,它用于向 Servle