-
java解析大容量的xml,插入mysql数据库问题求解(真的不简单)25
各位你们好,小弟今年刚毕业,学习java不久,到一家小公司上班,boss给我的任务是从xml文件中解析出表名、字段名、以及字段的值,把他插入到mysql相同的表中去,他设计的表呢有个问题,(1)数据库表中字段比我解析的字段多,有些字段我这个xml没有,这好说,不插入就行了,(2)字段比我解析出来的字段少,这就麻烦了,我如何插入数据库呢?哦我用的是jdbc xml文件目前是40M ,过几天可能会有更大,mysql的表示200多个, 介于问题二 苦恼了好几天不会解决求大神帮忙。再次谢过,我积分不多希望别介意
xml部分信息
<?xml version="1.0" encoding = "gbk"?> <rdf:RDF xml:base="nari" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cim="http://iec.ch/TC57/2003/CIM-schema-cim10#" xmlns:cimNARI="http://www.naritech.cn/CIM/ext-schema#"> <cim:SubControlArea rdf:ID="209000001"> <cim:Naming.name>乐平市供电公司</cim:Naming.name> <cimNARI:SubControlArea.areaNo>1</cimNARI:SubControlArea.areaNo> <cimNARI:SubControlArea.recordApp>2031647</cimNARI:SubControlArea.recordApp> <cimNARI:SubControlArea.MemberOf_ControlArea rdf:resource="#209000007"/> </cim:SubControlArea> <cim:BaseVoltage rdf:ID="200000003"> <cimNARI:BaseVoltage.name>110</cimNARI:BaseVoltage.name> <cim:BaseVoltage.nominalVoltage>110.000000</cim:BaseVoltage.nominalVoltage> <cimNARI:BaseVoltage.nominalI>0.000000</cimNARI:BaseVoltage.nominalI> <cimNARI:BaseVoltage.v_exm>132.000000</cimNARI:BaseVoltage.v_exm> <cimNARI:BaseVoltage.mva_exm>305.000000</cimNARI:BaseVoltage.mva_exm> </cim:BaseVoltage> <cim:Substation rdf:ID="210000048"> <cim:Naming.name>饶丰变</cim:Naming.name> <cim:Naming.aliasName>饶丰变</cim:Naming.aliasName> <cimNARI:Substation.substationType rdf:resource="http://www.naritech.cn/CIM/ext-schema#SubstationType.trans"/> <cimNARI:Substation.recordApp>2031647</cimNARI:Substation.recordApp> <cimNARI:Substation.MaxBaseVoltage rdf:resource="#200000004"/> <cim:Substation.MemberOf_SubControlArea rdf:resource="#209000003"/> </cim:Substation> <cim:Measurement rdf:ID="03060009610010"> <cim:Naming.name>马302过流II段</cim:Naming.name> <cim:Measurement.MeasurementType rdf:resource="#372000022"/> <cimNARI:Measurement.RelaySignal rdf:resource="#306000961"/> <cim:Measurement.MemberOf_PSR rdf:resource="#210000065"/> </cim:Measurement> <cim:Measurement rdf:ID="03070020190010"> <cim:Measurement.maxValue>0.000000</cim:Measurement.maxValue> <cim:Measurement.minValue>0.000000</cim:Measurement.minValue> <cim:Naming.name>茶山变_10kV天鹅一路线线电压BC相 </cim:Naming.name> <cim:Measurement.MeasurementType rdf:resource="#372000032"/> <cimNARI:Measurement.MeasValue rdf:resource="#307002019"/> <cim:Measurement.MemberOf_PSR rdf:resource="#210000083"/> </cim:Measurement> </rdf:RDF>
就以第一个节点为例吧,SubControlArea是表名,ID、name、areaNo、recordApp、resource是字段。
java代码(我现在能解析出表名,字段不会弄,会的话给我说下谢谢)
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ly.pconline.com.cn.utils.xml.dom4j;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.ElementHandler;
import org.dom4j.ElementPath;
import org.dom4j.io.SAXReader;
/**
*
* @author liyong
*/
public class XindexReader1 {
public static int flag = 0;
public static void main(String[] args) {
XindexReader1 x = new XindexReader1();
// x.parseXml();
x.parseXml2();
}
public void parseXml() {
SAXReader saxReader = new SAXReader();
InputStream in = null;
try {
File file = new File("E:\\work123.xml");
in = new FileInputStream(file);
ElementHandler myHandler = new ElementHandler() {
@Override
public void onStart(ElementPath ep) {
// System.out.println("www");
}
@Override
public void onEnd(ElementPath ep) {
Element element = ep.getCurrent(); // 获得当前节点
String en = element.getName();
System.out.println(en);
}
};
saxReader.addHandler("/RDF", myHandler);
saxReader.addHandler("/RDF/Substation", myHandler);
// saxReader.resetHandlers();
saxReader.read(in);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public void parseXml2() {
SAXReader saxReader = new SAXReader();
InputStream in = null;
try {
File file = new File("E:\\work123.xml");
in = new FileInputStream(file);
Document doc = saxReader.read(in);
List modelList = doc.selectNodes("//RDF");//以每个model划分
Iterator its = modelList.iterator();
int i = 0;
while (its.hasNext()) {
Element element = (Element) its.next();
Iterator it = element.elementIterator();
while (it.hasNext()) {
Element et = (Element) it.next();
String key = et.getName();
i++;
System.out.println(key + ":" + i);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
}
}
}
}
}
哦,我大概说下我的苦恼吧,xml解析出来应该是一表为单位,然后从mysl中的表信息去核对,把我解析多的字段去除,然后插入进去。不知道我的思路可否正确
2013年8月24日 14:51
2个答案 按时间排序 按投票排序
-
解析带命名空间的xml可以参考:http://zxs19861202.iteye.com/blog/745032,既然是mysql数据库,可以去information_schema.columns表中获取表所有的字段,
select * from information_schema.`COLUMNS` where table_name='hrt_train_main';
,其余的就不用一一说明了吧?2013年8月25日 13:29
相关推荐
本教程将介绍如何使用Java解析XML文件,并将解析结果导入MySQL数据库。 首先,我们需要引入处理XML的Java库——JAXB(Java Architecture for XML Binding)和DOM(Document Object Model)API。JAXB用于对象与XML...
xml文件导入到mysql数据库中,包括文件:ConnectionUtils.java,InsertDT.java,db_mysql.properties,test01.xml,需要的jar包dom4j-1.6.1.jar,mysql-connection-java-3.1.1.3-bin.jar,jaxen-1.1-beta-7.jar
java 从mysql数据库导出数据生成xml文件,新手来的,不喜勿喷
Java 解析 XML 并导入数据库(DOM4J) Java 解析 XML 并导入数据库是指使用 Java 语言将 XML 文件解析并将其内容导入到数据库中。下面是使用 DOM4J 库来实现此功能的相关知识点: 一、XML 文件解析 XML...
在本文中,我们将深入探讨如何使用Java开发一个串口助手应用程序,该程序能接收来自串行端口的数据并将其解析后存储到MySQL数据库中。首先,我们需要了解串口通信的基本概念,然后学习Java如何处理串口输入,接着是...
在Java编程中,将CSV(逗号分隔值)文件的数据导入到MySQL数据库是一项常见的任务。这个过程涉及几个关键步骤,包括读取CSV文件、解析数据、建立与数据库的连接以及执行SQL插入语句。本篇文章将详细讲解如何使用java...
本程序集的核心是利用Java解析XML文件,将XML中的数据映射到数据库,并通过反射机制进行数据库操作。下面将详细阐述这些知识点。 首先,XML解析在Java中通常有两种方式:DOM(Document Object Model)和SAX(Simple...
MySQL数据库自动生成XML文件是一项实用的技术,它可以帮助开发者快速地将数据库中的数据转换为XML格式,便于数据交换、存储或进一步处理。这项技术通常结合代码生成工具,如MyBatis的Generator,能够自动化生成DAO...
通过创建`XmlReader`实例,我们可以逐个节点遍历XML文件,每次读取一个节点时,解析数据并直接插入数据库。这种方法适用于大文件,防止一次性加载整个文件到内存中。 - 示例代码: ```csharp using (var reader =...
现在xml在web开发中必不可少,在开发中常常会涉及到对xml文档的解析,这个xml模拟数据库的控制台版考试管理系统使用java对xml文档进行dom解析,可以作为学习xml的一份参考资料,整个项目文件打包下载
例如,网络请求可能失败,XML解析可能出现异常,数据库插入可能会因为数据格式问题而失败。 通过以上步骤,我们可以成功地将`wthrcdn.etouch.cn`的XML天气数据解析并存储到MySQL数据库中。这个过程涉及了HTTP请求、...
在IT行业中,调用Web服务并解析XML是常见的任务,特别是在Java开发中。Web服务,尤其是基于SOAP(Simple Object Access Protocol)的,提供了一种标准的跨平台、跨语言的数据交换方式。本教程将深入讲解如何在Java...
MySQL-Connector-Java是Oracle官方提供的用于Java应用程序连接MySQL数据库的驱动程序,它实现了Java Database Connectivity (JDBC) API,使得Java开发者能够方便地在Java应用中与MySQL数据库进行交互。 在Java开发...
在Java开发中,将对象模型(实体)映射到关系型数据库如MySQL是常见的需求,这一过程被称为对象关系映射(ORM)。ORM框架允许我们通过编程语言操作数据,而不是直接编写SQL语句,大大提高了开发效率。本资源分享的是...
在这个场景中,我们探讨的是如何使用Java来实现在XML与不同类型的数据库之间的数据导入和导出,并结合了前台的Ajax技术以实现更流畅的用户体验。 首先,XML(eXtensible Markup Language)是一种用于存储和传输结构...
kettle动态解析XML文件数据导入Oracle或者其他数据库 需求背景: 因为客户每天都要通过接口通过ftp上传固定格式的xml的文件,需要每天定时解析指定目录下的指定名称的xml文件导入Oracle和其他的数据库,所以开发了这...
在Java编程中,XML(eXtensible Markup Language)是一种常用的数据交换格式,常用于存储配置信息,包括数据库连接参数。本篇文章将深入探讨如何使用DOM(Document Object Model)和SAX(Simple API for XML)两种...
本篇文章将深入探讨这两个关键组件:日志配置文件`log4j.xml`和MySQL数据库驱动文件`mysql-connector-java-5.1.39-bin.jar`。 首先,我们来了解`log4j.xml`。Log4j是Apache组织提供的一款开源的日志记录框架,广泛...