如何导出 XML 数据?

如何导出 XML 数据?,第1张

在导出数据时,Excel 会应用下列规则来确定保存的数据和保存数据的方式:如果存在可选元素空白单元格,则不会创建空项目,但是如果存在必需元素空白单元格,则会创建空项目。使用 Unicode Transformation Format-8 (UTF-8) 编码编写数据。所有命名空间均在 XML 根元素中定义。Excel 将覆盖现有命名空间的前缀。为默认的命名空间分配前缀 ns0。为连续的命名空间分配前缀 ns1、ns2 一直到 ns<count,其中 <count 是写入到 XML 文件的命名空间数。不保留注释节点。可以显示“XML 映射属性”对话框(单击“开发人员”选项卡上“XML”组中的“映射属性”),然后使用“根据架构验证数据进行导入和导出”选项(默认情况下为活动状态)来指定在导出数据时 Excel 是否根据 XML 映射验证数据。

//1。建立jdbc-odbc连接//2。在定义变量中,写入XML文件路径(在eclipse的编写)//3。建立数据库(以下DB为Users ),建表(以下表为users)//4。代码如下

import java.io.File

import java.sql.Connection

import java.sql.DriverManager

import java.sql.ResultSet

import java.sql.SQLException

import java.sql.Statement

import javax.xml.parsers.DocumentBuilder

import javax.xml.parsers.DocumentBuilderFactory

import javax.xml.transform.Transformer

import javax.xml.transform.TransformerFactory

import javax.xml.transform.dom.DOMSource

import javax.xml.transform.stream.StreamResult

import org.w3c.dom.Document

import org.w3c.dom.Element

import org.w3c.dom.NamedNodeMap

import org.w3c.dom.Node

import org.w3c.dom.NodeList

import org.w3c.dom.Text

public class append {

public static void main(String[] args) {

try{

DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance()

DocumentBuilder builder=factory.newDocumentBuilder()

Document doc=builder.parse(args[0])//记得定义你的XML路径

doc.normalize()

Element root = doc.getDocumentElement()

accessDB(doc,root)

if(doc != null)

printNode(root)

//////////////////////////

TransformerFactory tf=TransformerFactory.newInstance()

Transformer transformer=tf.newTransformer()

DOMSource source=new DOMSource(doc)

StreamResult result= new StreamResult(new File(args[0]))

transformer.transform(source,result)

}catch(Exception e){

e.printStackTrace()

}

}

public static void createXML(Document doc,Element root,ResultSet rs){

try{

boolean flag=rs.next()

while(flag){

Element Users=doc.createElement("Users")

Element userid=doc.createElement("userid")

Text userid_text=doc.createTextNode(""+rs.getInt("userid"))

userid.appendChild(userid_text)

Element username =doc.createElement("username")

Text username_text=doc.createTextNode(rs.getString("username"))

username.appendChild(username_text)

Element password =doc.createElement("password")

Text password_text=doc.createTextNode(rs.getString("password"))

password.appendChild(password_text)

Users.appendChild(userid)

Users.appendChild(username)

Users.appendChild(password)

root.appendChild(Users)

flag=rs.next()

}

}

catch(SQLException e){

e.printStackTrace()

}

}

public static void accessDB(Document doc , Element root){

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")

Connection conn= DriverManager.getConnection("jdbc:odbc:yourBDconName"/*URL*/

)

Statement stmt=conn.createStatement()

ResultSet rs=stmt.executeQuery("select * from users")

createXML(doc,root,rs)

rs.close()

stmt.close()

conn.close()

}catch(Exception e){

e.printStackTrace()

}

}

public static void printNode(Element element){

NodeList children=element.getChildNodes()

NamedNodeMap attr=element.getAttributes()

int r=children.getLength()

if(attr!=null){

System.out.print("<"+element.getNodeName())

for(int j=0j<attr.getLength()j++)

{

System.out.print(" "+attr.item(j).getNodeName())

}

System.out.print(">"+"\n")

}

else if(attr==null){

System.out.print("<"+element.getNodeName()+">")

}

if(element.hasChildNodes()){

for(int k=0k<rk++)

{

if(children.item(k).getNodeType()==Node.ELEMENT_NODE)

printNode((Element)children.item(k))

else if(children.item(k).getNodeType()==Node.TEXT_NODE)

System.out.println(children.item(k).getNodeValue())

}

}

System.out.print("</"+element.getNodeName()+">"+"\n")

}

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存