解析XML文档

本文介绍了一个电力数据解析系统,该系统通过客户端和服务端交互处理XML文件中的电力数据,并将解析后的数据插入到数据库中。系统使用Spring框架进行依赖注入,通过JDBC操作数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---客户端
package com.hh.socket;

import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.hh.dao.InsertHourAndDayImpl;
import com.hh.entity.DayBean;
import com.hh.entity.HourBean;

//客户端,
public class Client {
HourBean hb=new HourBean();
DayBean db=new DayBean();
ApplicationContext context=new ClassPathXmlApplicationContext("Config.xml");
ApplicationContext con=new ClassPathXmlApplicationContext("applicationContext.xml");

public void getConn(){
String file="E:\\文档目录.xml";
try {
Socket socket=new Socket("127.0.0.1",8088);
PrintWriter writer=new PrintWriter(socket.getOutputStream());
writer.println(file);
writer.flush();

ObjectInputStream in=new ObjectInputStream(socket.getInputStream());
List list=(List) in.readObject();
InsertHourAndDayImpl ihi=(InsertHourAndDayImpl) con.getBean("jdbcImpl");
for(int i=0;i<list.size();i++){
boolean boo=ihi.insertDayData((DayBean)list.get(i));
if(boo){
System.out.println("Oh!Yeah!");
}
}

} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
new Client().getConn();
}
}
-------服务端

package com.hh.socket;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.List;

import org.springframework.jdbc.core.JdbcTemplate;

import com.hh.dao.InsertHourAndDayImpl;
import com.hh.entity.HourBean;

//服务器端
public class Server{
HourBean hb=new HourBean();

//连接端口
public void getConn(){
try {
ServerSocket ssocket=new ServerSocket(8088);
System.out.println("连接开启!");
while(1==1){
Socket socket=ssocket.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str= in.readLine();

List list=new InsertHourAndDayImpl().evaluateDay(str);

ObjectOutputStream out=new ObjectOutputStream(socket.getOutputStream());
out.writeObject(list);

out.close();
in.close();
socket.close();
}
} catch (IOException e1) {
e1.printStackTrace();
}
}

public static void main(String[] args) {
new Server().getConn();
}
----------逻辑类
package com.hh.dao;

import java.io.File;
import java.util.*;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

import com.hh.entity.DayBean;
import com.hh.entity.HourBean;
import com.hh.entity.InsertHourBiz;

public class InsertHourAndDayImpl implements InsertHourBiz{
JdbcTemplate template;
public void setTemplate(JdbcTemplate template) {
this.template = template;
}

HourBean hb=new HourBean();
public List evaluate(String file){
SAXReader read=new SAXReader();
Document doc=null;

try {
doc=read.read(new File(file));
} catch (DocumentException e) {
e.printStackTrace();
}
// 写入新文件
List l=new ArrayList();
Element ele = doc.getRootElement();
List list = ele.elements();
System.out.println( list.get(0).toString());
// 获得小时数据节点的值
for(int i=0;i<list.size();i++){
Element element = (Element) list.get(i);
//变压器id

String f0 = element.attributeValue("TranId");
System.out.println(f0);
//日期
String f1 = element.element("Date").getText();
f1 = f1.replaceAll("-", "/");
//尖峰平谷.有无功总码
float f2 = new Float(element.elementText("PowerNum")).floatValue();
float f3 = new Float(element.elementText("Needle")).floatValue();
float f4 = new Float(element.elementText("Apex")).floatValue();
float f5 = new Float(element.elementText("Ping")).floatValue();
float f6 = new Float(element.elementText("Valley")).floatValue();
float f7 = new Float(element.elementText("UnPowerNum")).floatValue();
float f8 = new Float(element.elementText("UnNeedle")).floatValue();
float f9 = new Float(element.elementText("UnApex")).floatValue();
float f10 = new Float(element.elementText("UnPing")).floatValue();
float f11 = new Float(element.elementText("UnValley")).floatValue();
// 有无功功率
float Power = new Float(element.elementText("Power")).floatValue();
float UnPower = new Float(element.elementText("UnPower")).floatValue();
//ABC电压电流
float av=new Float(element.elementText("AVoltage")).floatValue();
float bv=new Float(element.elementText("BVoltage")).floatValue();
float cv=new Float(element.elementText("CVoltage")).floatValue();

float ac=new Float(element.elementText("ACurrent")).floatValue();
float bc=new Float(element.elementText("BCurrent")).floatValue();
float cc=new Float(element.elementText("CCurrent")).floatValue();

//循环添加小时数据
HourBean hb=new HourBean(f0,new Date(f1),f2,f7,Power,UnPower,f3,f4,f5,f6,
f8,f9,f10,f11,av,bv,cv,ac,bc,cc);
l.add(hb);

}
return l;
}

//插入到小时数据库
public boolean insertHourData(HourBean hb) {
boolean boo=false;
Object[] obj={hb.getTranId(),hb.getTime(),new Float(hb.getPowerNum()),
new Float(hb.getUnPowerNum()),new Float(hb.getPower()),
new Float(hb.getUnPower()),new Float(hb.getNeedle()),new Float(hb.getApex()),
new Float(hb.getPing()),new Float(hb.getValley()),new Float(hb.getUnNeedle()),
new Float(hb.getUnApex()),new Float(hb.getUnPing()),new Float(hb.getUnValley()),
new Float(hb.getAVoltage()),new Float(hb.getBVoltage()),new Float(hb.getCVoltage()),
new Float(hb.getACurrent()),new Float(hb.getBCurrent()),new Float(hb.getCCurrent())};
String sql="insert into scott.elec_tranHour values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
template.update(sql,obj);

boo=true;
return boo;
}

//日数据
DayBean db=new DayBean();
public List evaluateDay(String file){
SAXReader read=new SAXReader();
Document doc=null;

try {
doc=read.read(new File(file));
} catch (DocumentException e) {
e.printStackTrace();
}
// 写入新文件
List l=new ArrayList();
Element ele = doc.getRootElement();
List list = ele.elements();
System.out.println( list.get(0).toString());
// 获得日数据节点的值
for(int i=0;i<list.size();i++){
Element element = (Element) list.get(i);
//变压器id

String f0 = element.attributeValue("TranId");
System.out.println(f0);
//日期
String f1 = element.element("Date").getText();
f1 = f1.replaceAll("-", "/");
//有功总码
float f2 = new Float(element.elementText("PowerTotalNum")).floatValue();
//有功总码.尖峰平谷
float f3 = new Float(element.elementText("PowerNeedle")).floatValue();
float f4 = new Float(element.elementText("PowerApex")).floatValue();
float f5 = new Float(element.elementText("PowerPing")).floatValue();
float f6 = new Float(element.elementText("PowerValley")).floatValue();
//无功总码.尖峰平谷
float f7 = new Float(element.elementText("UnPowerTotalNum")).floatValue();
float f8 = new Float(element.elementText("UnNeedle")).floatValue();
float f9 = new Float(element.elementText("UnApex")).floatValue();
float f10 = new Float(element.elementText("UnPing")).floatValue();
float f11 = new Float(element.elementText("UnValley")).floatValue();
// 有无功电量
float PowerElectricity = new Float(element.elementText("PowerElectricity")).floatValue();
float unPowerElectricity = new Float(element.elementText("UnPowerElectricity")).floatValue();

//循环添加小时数据
DayBean db=new DayBean(f0,new Date(f1),f2,PowerElectricity,f3,f4,f5,f6,f7,unPowerElectricity,f8,f9,f10,f11);
l.add(db);

}
return l;
}

//插入到日数据库
public boolean insertDayData(DayBean db){
boolean boo=false;
Object[] obj={db.getTranId(),db.getDate(),new Float(db.getPowerTotalNum()),
new Float(db.getPowerElectricity()),new Float(db.getPowerNeedle()),new Float(db.getPowerApex()),
new Float(db.getPowerPing()),new Float(db.getPowerValley()),new Float(db.getUnPowerTotalNum()),
new Float(db.getUnPowerElectricity()),new Float(db.getUnNeedle()),
new Float(db.getUnApex()),new Float(db.getUnPing()),
new Float(db.getUnValley()),
};
String sql="insert into scott.elec_tranDay values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
template.update(sql,obj);
boo=true;
return boo;
}


}
--------------配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:@localhost:1521:orcl">
</property>
<property name="username" value="system"></property>
<property name="password" value="system"></property>
</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>

<bean id="jdbcImpl" class="com.hh.dao.InsertHourAndDayImpl">
<property name="template" ref="jdbcTemplate"></property>
</bean>


</beans>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值