如何从XML文件中提取数据集

如何从XML文件中提取数据集,第1张

using System.Xml引入Xml命名空间, 然后建立一个XML文档. XmlTextWriter writer = new XmlTextWriter("tree.xml", System.Text.Encoding.UTF8)建立根节点

//初始化一个xml实例

XmlDocument xml=new XmlDocument()

//导入指定xml文件

xml.Load(path)

xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"))

//指定一个节点

XmlNode root=xml.SelectSingleNode("/root")

//获取节点下所有直接子节点

XmlNodeList childlist=root.ChildNodes

//判断该节点下是否有子节点

root.HasChildNodes

//获取同名同级节点集合

XmlNodeList nodelist=xml.SelectNodes("/Root/News")

//生成一个新节点

XmlElement node=xml.CreateElement("News")

//将节点加到指定节点下,作为其子节点

root.AppendChild(node)

//将节点加到指定节点下某个子节点前

root.InsertBefore(node,root.ChildeNodes[i])

//为指定节点的新建属性并赋值

node.SetAttribute("id","11111")

//为指定节点添加子节点

root.AppendChild(node)

//获取指定节点的指定属性值

string id=node.Attributes["id"].Value

//获取指定节点中的文本

string content=node.InnerText

//保存XML文件

string path=Server.MapPath("~/file/bookstore.xml")

xml.Save(path)

我自己前段时间写的有事就问

数据库建了一个表study

id student class teacher age 这5个字段

package com.sql.xml

import java.io.File

import java.io.FileOutputStream

import java.io.FileWriter

import java.sql.Connection

import java.sql.DriverManager

import java.sql.ResultSet

import java.sql.Statement

import org.dom4j.Document

import org.dom4j.DocumentHelper

import org.dom4j.Element

import org.dom4j.io.OutputFormat

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"

String password="password"

Class.forName(classforname)

Connection con=DriverManager.getConnection(url,usename,password)

Statement sta=con.createStatement()

//查询数据

ResultSet result=sta.executeQuery(

"SELECT * FROM study")

//创建根节点

Document document=DocumentHelper.createDocument()

Element studyInfo=DocumentHelper.createElement("studyInfo")

document.setRootElement(studyInfo)

//Element studyInfo=document.addElement("studyInfo")

//当有值时查询

while(result.next()){

//增加每个节点

Element study=studyInfo.addElement("study")

Element id=study.addElement("id")

Element student=study.addElement("student")

Element classe=study.addElement("class")

Element teacher=study.addElement("teacher")

Element age=study.addElement("age")

//将数据库值通过SETTEXT为XML值

id.setText(result.getString("id"))

student.setText(result.getString("student"))

//System.out.println(id.getText())

classe.setText(result.getString("class"))

teacher.setText(result.getString("teacher"))

age.setText(result.getString("age"))

}

//将树导出到文件中:两种输出方法

XMLWriter write=new XMLWriter(new FileOutputStream(new File("studyInfo.xml")))

write.write(document)

write.close()

}catch(Exception e){

e.printStackTrace()

}

}

}

插入数据库,改了几个条件

bookstore.xml文件如下

<?xml version="1.0" encoding="UTF-8"?>

<bookstore>

<book has="100">

<bname>数据库</bname>

<price>33.80元</price>

<date>2009-10-1</date>

</book>

<book has="95">

<bname>三国演义</bname>

<price>40.00元</price>

<date>2005-1-7</date>

</book>

<book has="86">

<bname>西游记</bname>

<price>30.00元</price>

<date>2004-3-8</date>

</book>

<cd have="15">

<id>1</id>

<cname>beyound</cname>

<owner>小黎</owner>

</cd>

<cd have="17">

<id>2</id>

<cname>kugou</cname>

<owner>小强</owner>

</cd>

</bookstore>

解析如下

package com.sql.xml

import java.io.File

import java.io.FileWriter

import java.sql.Connection

import java.sql.DriverManager

import java.util.Iterator

import org.dom4j.Attribute

import org.dom4j.Document

import org.dom4j.Element

import org.dom4j.DocumentException

import org.dom4j.io.SAXReader

import org.dom4j.io.XMLWriter

import org.dom4j.io.OutputFormat

//XML的解析与转换后存入数据库

public class Fenkai {

public static void main(String args[]){

String sql,BNAME=null,PRICE=null,DAT=null//定义数据库表段

String sqlatt,CNAME=null,ID=null,OWNER=null

//读取xml文件

SAXReader reader=new SAXReader()

File file=new File("bookstore.xml")

try{

//数据库连接

String url="jdbc:oracle:thin:@10.0.3.18:1521:hxtest18"

String classforname="oracle.jdbc.driver.OracleDriver"

String usename="zhiyong"

String password="password"

Class.forName(classforname)

Connection con=DriverManager.getConnection(url,usename,password)

//解析xml文件

Document document=reader.read(file)

Element root=document.getRootElement()//根节点

System.out.println("输出根节点:"+root.getName())

//下面用迭代得到子节点和孙节点

for(Iterator child=root.elementIterator()child.hasNext()){

Element childEle=(Element)child.next()

System.out.println("子:"+childEle.getName())

System.out.println("孙:")

for(Iterator grand=childEle.elementIterator()grand.hasNext()){

Element grandEle=(Element)grand.next()

System.out.println(grandEle.getName()+"值:"+grandEle.getText())

//转换数据

while(grandEle.getText().equals("数据库")){

grandEle.setText("001")

}

while(grandEle.getText().equals("三国演义")){

grandEle.setText("002")

}

while(grandEle.getText().equals("西游记")){

grandEle.setText("003")

}

while(grandEle.getText().equals("beyound")){

grandEle.setText("004")

}

while(grandEle.getText().equals("kugou")){

grandEle.setText("005")

}

}}

//得到各节点值插入数据库

for(Iterator it= root.elementIterator("book")it.hasNext()){

Element ch=(Element)it.next()

BNAME=ch.elementText("bname")

PRICE=ch.elementText("price")

DAT=ch.elementText("date")

// while(childEle.getName().equals("cd")){}

sql="insert into book values('"+BNAME+"','" +PRICE

+"','"+DAT+"')"

//sql="select * from book"//加入本语句运行不改变数据表

//执行

con.createStatement().executeUpdate(sql)}

for(Iterator itt= root.elementIterator("cd")itt.hasNext()){

Element cht=(Element)itt.next()

CNAME=cht.elementText("cname")

ID=cht.elementText("id")

OWNER=cht.elementText("owner")

sqlatt="insert into cd values('"+CNAME+"','" +ID

+"','"+OWNER+"')"

//sqlatt="select * from cd"

con.createStatement().executeUpdate(sqlatt)}

//将转换后文件存入txt

OutputFormat format=OutputFormat.createPrettyPrint()

format.setEncoding("gbk")

XMLWriter writer = new XMLWriter( new FileWriter(new File("bookchange.txt")),format)

writer.write(document)

writer.close()

System.out.println(document.asXML())//打印改变后的树

}catch(Exception e){

e.printStackTrace()

System.out.println("有错啊!")

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10809027.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-11
下一篇2023-05-11

发表评论

登录后才能评论

评论列表(0条)

    保存