java 服务器端扫描文件夹下xml文件,并导入到Oracle数据库

老师让用jsp做一个B/S架构的项目,其中有个功能是服务器自动扫描某个文件夹里是否有xml的文件,如果有,把里面的数据导入到Oracle里。求哥哥姐姐帮个忙,最好能来点代码^_^

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

public class CreateXMLForEnterServelet extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GBK";

//Initialize global variables
public void init() throws ServletException {
}

//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
//获取传递过来的值
String databaseType = request.getParameter("select");
String userName = request.getParameter("userName");
String userPassword = request.getParameter("userPassword");
String dbName = request.getParameter("dbName");
String dbSouse = request.getParameter("dbSouces");
int port = Integer.parseInt(request.getParameter("portNum"));
Document doc;
Element root;
try
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
String path = request.getRealPath("/");
File file = new File( path + "/" + "DBInfo.xml");
if(!file.exists())
{
doc = db.newDocument();
root = doc.createElement("DBInfo");
doc.appendChild(root);
}
else
{
doc = db.parse(file);
root = doc.getDocumentElement();
}

//添加子节点
Element rowNode = doc.createElement(databaseType);
root.appendChild(rowNode);
Node node = doc.createElement("Driver");
Node nodestr = doc.createElement("ConnectString");
Node serverName = doc.createElement("ServerName");
Node nodeName = doc.createElement("UserName");
Node nodePWD = doc.createElement("PassWord");
Node nodePort = doc.createElement("Port");
Node nodeDB = doc.createElement("DataBase");

rowNode.appendChild(node);
rowNode.appendChild(nodestr);
rowNode.appendChild(serverName);
rowNode.appendChild(nodeDB);
rowNode.appendChild(nodeName);
rowNode.appendChild(nodePWD);
rowNode.appendChild(nodePort);

String nodeValue;//Driver
String nodeConStr;//连接字符串
if(databaseType.equals("ORACLE"))
{
nodeValue = "oracle.jdbc.driver.OracleDriver";
nodeConStr = "jdbc:oracle:thin";
}
else
{
nodeValue = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
nodeConStr = "jdbc:microsoft:sqlserver";
}
Text text = doc.createTextNode(nodeValue);
Text textstr = doc.createTextNode(nodeConStr);
Text textName = doc.createTextNode(userName);
Text textPWD = doc.createTextNode(userPassword);
Text textServer = doc.createTextNode(dbName);
Text textPort = doc.createTextNode(String.valueOf(port));
Text textDB = doc.createTextNode(dbSouse);

node.appendChild(text);
nodestr.appendChild(textstr);
nodeName.appendChild(textName);
nodePWD.appendChild(textPWD);
serverName.appendChild(textServer);
nodePort.appendChild(textPort);
nodeDB.appendChild(textDB);

DOMSource doms = new DOMSource(doc);

StreamResult sr = null;

TransformerFactory tff = TransformerFactory.newInstance();
Transformer tf = tff.newTransformer();
sr = new StreamResult(file);
tf.transform(doms,sr);
out.println("<h1>Create XMLFile Is Ok!!</h1>");
request.getRequestDispatcher("index.jsp").forward(request,response);
}
catch(Exception ex)
{
out.println("<h1>生成 XML 配置文件时出现错误:</h1><br/><h4>"+ex+"</h4>");
out.println("<br/><br/>");
out.print("<a href='index.jsp'>【点这里回到首页】</a>");

}

out.close();

}

//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
}

//Clean up resources
public void destroy() {
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-10
//获取xml文件
File file = new File("文件路径");
if(file.exists()){
File[] fs=file.listFiles();
for (File file2 : fs) {
if(file2.isFile()&&file2.getName().endsWith(".xml")){
System.out.println("获取到xml文件"+file2.getName());
}
}
}
//解析xml
public static List<Student> parseXML() {
List<Student> stu = new ArrayList<Student>();
SAXReader parser = new SAXReader();// dom4j锟侥斤拷锟斤拷锟斤拷
Reader reader = null;
try {
reader = new FileReader("people.xml");
Document doc = parser.read(reader); // 锟斤拷xml锟斤拷锟截碉拷document锟斤拷锟斤拷锟斤拷
Element root = doc.getRootElement(); // 锟斤拷锟斤拷锟斤拷锟斤拷思锟斤拷锟斤拷薪锟斤拷锟�
List<Element> list = root.elements();// 锟矫碉拷锟斤拷一锟斤拷元锟截硷拷锟斤拷
// elementIterator()
for (Element people : list)// people
{
String eleName = people.getName();// 元锟斤拷锟斤拷
List<Attribute> attributes = people.attributes();// 锟斤拷锟皆的硷拷锟斤拷
// 锟矫碉拷people锟斤拷锟斤拷一锟斤拷元锟斤拷
Student student = new Student();
List<Element> peoplePros = people.elements();
for (Element pro : peoplePros) {
if (pro.attribute("id") != null) {
student.setId(Integer.parseInt(pro.attribute("id")
.getValue()));
}
String peopleProName = pro.getName();
String peopleProValue = new String(pro.getTextTrim());
student.setName(peopleProName);
student.setAge(peopleProValue);
// System.out.println(pro.getNodeType());
// System.out.println(peopleProName + "----dd:"
// + peopleProValue);
}
stu.add(student);
}
return stu;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//xml文件
<?xml version="1.0" encoding="UTF-8"?>
<stuList>
<student id="1001">
<title>李四</title>
<year>21</year>
</student>
<student id="1002">
<title>张三</title>
<year>42</year>
</student>
</stuList>
可以按需求解析xml,返回的是一个集合,然后添加到数据库吧本回答被提问者和网友采纳
第2个回答  2015-12-28
递推 - 读取 - 解析-插入

...java解析xml文件的数据批量插入到oracle数据库(用SAX解析)
import org.dom4j.io.XMLWriter;\/\/导出数据存入XML public class ReadDb { public static void main(String args[]){ \/\/连接数据库 try{ \/\/数据库连接 String url="jdbc:oracle:thin:@10.0.3.18:1521:hxtest18";String classforname="oracle.jdbc.driver.OracleDriver";String usename="zhiyong...

...xml文件中的数据并将其存入oracle数据库中,求java实现
没有数据的格式,操作不了,给两编参考 解析XML http:\/\/wenku.baidu.com\/view\/e8cdd93083c4bb4cf7ecd163.html java 操作oracle http:\/\/wenku.baidu.com\/view\/569a75ea102de2bd960588b0.html

java实现大量数据导入功能?
Java中怎么实现txt文件批量数据导入到Oracle中,在txt中有一定的格式,解析出来导入到Oracle。1.读取文本文件,每次读取一行,用BufferedReader 2.因为每一行中都是固定的格式,因此解析每一行中的数据。3.将解析的数据保存到数据库。BufferedReaderbr=newBufferedReader(newFileReader(newFile("aa.txt")));...

如何用oracle向指定ip发送一个xml文件?返回的结果也是xml格式的,并且...
方法一:定制1521端口外部存储过程客户端,采用定时器、触发器等得出XML 方法二:用socket将结果放送,这个结合程序C++,java,ok 2、第二个问题向指定的ip也就是服务器发送xml文件后,服务器会自动返回一个xml文件,我该如何解析这个xml呢?方法一:结合程序C++,java用socket将结果放送ok.思路就这样了,...

java与oracle数据库相连,用的是哪个jar文件?
恩恩,是这个文件,就是class12.jar文件 我安装的是11g,路径是E:\\app\\binbin\\product\\11.2.0\\dbhome_1\\oui\\jlib\\classes12.jar 其它的oracle版本的classes12.jar的位置,你就百度一下吧

java如何导入数据库DMP文件到远程服务器上?
导出数据,存储过程,触发器,视图,权限等。这个就看你的需求了。。然后在分析文件实现导入。。3,自己编写系统程序,实现导入功能,仍然通过Runtime.exec来调用。4,因为imp是系统命令,你用stmt来调用是不对的,这个stmt只能执行sql语句,是oracle来分析的,所以会报错不是有效的sql语句。你换runtime....

用B\/S模式实现将DBF文件导入到Oracle数据库表
你这个思路可以,dbf的格式非常简单,基本就是将数据顺序放在文件中,你随便搜搜就能搜到,sqlloader的使用也很简单,就几条语句就可以了,网上搜一搜吧。你也可以用java拼接insert语句插入数据库,这样不需要你能远程执行数据库服务器的脚本,但是性能不如你的想法。你也可以编写plsql程序直接将dbf读取,...

...数据库A中的所有表及表数据复制到目标数据库B。(ORACLE数据库...
如果A库中的数据量不大,可以直接使用pl\/sql 工具,导出数据库结构和数据,然后到B数据库中执行导出的命令。这样不就解决了,干吗要有java呢?用java比较慢,我弄过一次!如果非要用java可以把A中的数据导入到一个excel表中,然后使用A库的建表语句在B中建表,使用java把excel表中的数据导入即可,...

用java做一个功能,把oracle中的某个表或条件的数据导成xml文件进行保存...
你可以考虑用xml schema 先定义好schema 然后用jdk提供的工具 在 java\/bin目录下xjc 自动生成java对象 然后只需要网生成对象里面对应赋值 然后 有个方法可以自动吧java对象编程xml的 不过做数据的确很慢 你可以找第三方数据库连接工具 一般都有备份成xml格式的功能 ...

JBOSS7.1.1 EJB连接数据库问题
首先在jboss-as-7.1.1.Final\\standalone\\configuration下配置standalone.xml文件:<datasources> <datasource jta="true" jndi-name="java:jboss\/MyOracleDS" pool-name="OracleDS" enabled="true" use-java-context="true" use-ccm="true"> <connection-url>jdbc:oracle:thin:@*:1521:DEV1<\/...

相似回答