您的位置:首页 > 编程语言 > Java开发

java DOM解析XML(1)

2008-02-17 17:09 483 查看
===========================读取XML文件的数据========================================

XML源文件

<?xml version="1.0"?>

<people>

<person personid="ACCP01">

<name>li</name>

<age>42</age>

<address>shashi</address>

</person>

<person personid="ACCP02">

<name>liu</name>

<age>23</age>

<address>wuhan</address>

</person>

<person personid="ACCP03">

<name>wang</name>

<age>25</age>

<address>wuhan</address>

</person>

</people>

DOM枚举上面XML文档的数据:

import org.w3c.dom.*;

import javax.xml.parsers.*;

public class Untitled2 {

public static void main(String args[]) throws Exception

{

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = factory.newDocumentBuilder();

Document doc = builder.parse("liu.xml");

//可以为绝对路径 也可以为相对路径 为相对路径时 在工程中加入XML文件

NodeList n1 = doc.getElementsByTagName("person");

for (int i = 0; i < n1.getLength(); i++) {

Element node = (Element) n1.item(i);

System.out.print("name:");

System.out.println(node.getElementsByTagName("name").item(0).

getFirstChild().getNodeValue());

System.out.print("age:");

System.out.println(node.getElementsByTagName("age").item(0).

getFirstChild().getNodeValue());

System.out.print("address:");

System.out.println(node.getElementsByTagName("address").item(0).

getFirstChild().getNodeValue());

System.out.println();

}

}

}

============================创建XML文档并用树形方式显示在控制台上===========================

import org.w3c.dom.*;

import org.apache.crimson.tree.*;

import javax.xml.parsers.*;

public class Untitled2 {

public static void main(String args[]) throws Exception

{

Element peop=null;

Element per=null;

//Element per1=null;

Element na=null;

// Element na1=null;

Element ag=null;

// Element ag1=null;

Element address=null;

//Element address1=null;

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = factory.newDocumentBuilder();

Document doc = builder.newDocument();

if(doc!=null)

{

peop=doc.createElement("PEOPLE");

per=doc.createElement("PERSON");

// per1=doc.createElement("PERSON");

peop.appendChild(per);

// peop.appendChild(per1);

na=doc.createElement("NAME");

na.appendChild(doc.createTextNode("li"));

per.appendChild(na);

ag=doc.createElement("age");

ag.appendChild(doc.createTextNode("42"));

per.appendChild(ag);

address=doc.createElement("ADDRESS");

address.appendChild(doc.createTextNode("shashi"));

per.appendChild(address);

// na1=doc.createElement("NAME");

// na1.appendChild(doc.createTextNode("liu"));

// per1.appendChild(na1);

// ag1=doc.createElement("age");

// ag1.appendChild(doc.createTextNode("23"));

// per1.appendChild(ag1);

// address1=doc.createElement("ADDRESS");

// address1.appendChild(doc.createTextNode("shashi"));

// per1.appendChild(address1);

doc.appendChild(peop);

((XmlDocument)doc).write(System.out);

}

}

}

=============读取XML文件==========================

---》XML文档如下

<?xml version="1.0"?>

<people>

<person>

<name>li</name>

<age>42</age>

<address>shashi</address>

</person>

<person>

<name>liu</name>

<age>23</age>

<address>wuhan</address>

</person>

<person>

<name>wang</name>

<age>25</age>

<address>wuhan</address>

</person>

</people>

----》源代码如下

import javax.xml.parsers.*;

import javax.xml.transform.*;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.*;

class B{

public static void main(String args[]) throws Exception

{

DocumentBuilderFactory DBF=DocumentBuilderFactory.newInstance();

DocumentBuilder DB=DBF.newDocumentBuilder();

Document DOC=DB.parse("A.xml");

NodeList N1=DOC.getElementsByTagName("person");

for(int i=0;i<N1.getLength();i++)

{

Element E=(Element)N1.item(i);

NodeList NL=E.getElementsByTagName("address");

E.removeChild(NL.item(0));

}

TransformerFactory TF=TransformerFactory.newInstance();

Transformer T=TF.newTransformer();

DOMSource DOMS=new DOMSource(DOC);

StreamResult SR=new StreamResult(System.out);

T.transform(DOMS,SR);

}

}

==========================================删除XML数据============

import javax.xml.parsers.*;

import javax.xml.transform.*;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.*;

class Untitled1 {

public static void main(String args[]) throws Exception

{

DocumentBuilderFactory DBF=DocumentBuilderFactory.newInstance();

DocumentBuilder DB=DBF.newDocumentBuilder();

Document DOC=DB.parse("xml1.xml");

NodeList N1=DOC.getElementsByTagName("person");

for(int i=0;i<N1.getLength();i++)

{

Element E=(Element)N1.item(i);

NodeList NL=E.getElementsByTagName("address");

E.removeChild(NL.item(0)); //删除

}

TransformerFactory TF=TransformerFactory.newInstance();

Transformer T=TF.newTransformer();

DOMSource DOMS=new DOMSource(DOC);

StreamResult SR=new StreamResult(System.out);

T.transform(DOMS,SR);

}

}

=========================JDBC将XML数据插入到数据库==========================================

---------------------------首先创建表:

create table people(

name1 varchar(20),

age varchar(10),

address varchar(50)

)

--------------------------accp.xml源文件如下:

<?xml version="1.0"?>

<people>

<person>

<name>li</name>

<age>42</age>

<address>shashi</address>

</person>

<person>

<name>liu</name>

<age>23</age>

<address>wuhan</address>

</person>

<person>

<name>wang</name>

<age>25</age>

<address>wuhan</address>

</person>

</people>

--------------------------源代码如下:

import java.sql.*;

import javax.xml.parsers.*;

import org.w3c.dom.*;

public class Untitled1 {

public static void main(String args[]) throws Exception

{

Connection conn=null;

Statement stmt=null;

String na,ag,add,sql;

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

conn=DriverManager.getConnection("jdbc:odbc:qq","sa","");

stmt=conn.createStatement();

DocumentBuilderFactory DBF=DocumentBuilderFactory.newInstance();

DocumentBuilder DB=DBF.newDocumentBuilder();

Document DOC=DB.parse("accp.xml");

NodeList N1=DOC.getElementsByTagName("person");

for(int i=0;i<N1.getLength();i++)

{

Element E=(Element)N1.item(i);

na=E.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();

ag=E.getElementsByTagName("age").item(0).getFirstChild().getNodeValue();

add=E.getElementsByTagName("address").item(0).getFirstChild().getNodeValue();

sql="insert into people values(\'"+na+"\',\'"+ag+"\',\'"+add+"\')";

int ret=stmt.executeUpdate(sql);

}

System.out.println("已经将XML数据插入到数据库中");

stmt.close();

conn.close();

}

}

===========如何从数据库表中取出数据并以树形方式在消息窗口显示:============

import org.apache.crimson.tree.*;

import org.w3c.dom.*;

import java.sql.*;

import javax.xml.parsers.*;

import java.io.*;

public class Untitled1 {

public static void main(String args[]) throws Exception

{

Element peop=null;

Element per=null;

Element na=null;

Element ag=null;

Element add=null;

Connection conn=null;

ResultSet rs=null;

Statement stmt=null;

Document doc=null;

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

conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");

stmt=conn.createStatement();

rs=stmt.executeQuery("select * from people");

DocumentBuilderFactory DBF=DocumentBuilderFactory.newInstance();

DocumentBuilder DB=DBF.newDocumentBuilder();

doc=DB.newDocument();

peop=doc.createElement("people");

while(rs.next())

{

per=doc.createElement("person");

peop.appendChild(per);

na=doc.createElement("name");

na.appendChild(doc.createTextNode(rs.getString("name1")));

per.appendChild(na);

ag=doc.createElement("age");

ag.appendChild(doc.createTextNode(rs.getString("age")));

per.appendChild(ag);

add=doc.createElement("address");

add.appendChild(doc.createTextNode(rs.getString("address")));

per.appendChild(add);

}

doc.appendChild(peop);

((XmlDocument)doc).write(System.out);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: