📄 702164.xml
字号:
<?xml version='1.0' encoding='GB2312'?>
<?xml-stylesheet type='text/xsl' href='../csdn.xsl'?>
<Topic>
<Issue>
<PostUserNickName></PostUserNickName>
<rank>一级(初级)</rank>
<ranknum>user1</ranknum>
<credit>98</credit>
<TopicId>702164</TopicId>
<TopicName>怎样用dom访问xml文档</TopicName>
<PostUserId>247628</PostUserId>
<PostUserName>jevon00</PostUserName>
<RoomName>JSP</RoomName>
<ReplyNum>9</ReplyNum>
<PostDateTime>2002-5-6 23:38:34</PostDateTime>
<Point>40</Point>
<ReadNum>0</ReadNum>
<RoomId>28</RoomId>
<EndState>2</EndState>
<Content>小弟初学jsp和xml,对用dom访问xml文档不太了解,望哪位高手帮忙解释一下,再给一个简单的实例,先谢了。</Content>
</Issue>
<Replys>
<Reply>
<PostUserNickName>九分半醉为红尘</PostUserNickName>
<rank>五级(中级)</rank>
<ranknum>user5</ranknum>
<credit>89</credit>
<ReplyID>4600829</ReplyID>
<TopicID>702164</TopicID>
<PostUserId>112142</PostUserId>
<PostUserName>scarab</PostUserName>
<Point>20</Point>
<Content>import org.jdom.*; 
import org.jdom.output.*; 
import org.jdom.input.*; 
import java.io.*; 
public class TestJDOM
{ 
	public static void main(String args[])throws Exception
	{ 
		//SAXBuilder builds a JDOM tree using SAX.
		SAXBuilder sb = new SAXBuilder(); 
		//从文件构造一个Document,因为XML文件中已经指定了编码,所以这里不必了 
		Document doc = sb.build(new FileInputStream("exampleA.xml")); 
		//加入一条处理指令 
		ProcessingInstruction pi = new ProcessingInstruction ("xml-stylesheet","href=\"greeting.css\" type=\"text/css\""); 
		doc.addContent(pi); 
		Element root = doc.getRootElement(); //得到根元素 
		java.util.List books = root.getChildren(); //得到根元素所有子元素的集合 
		Element book = (Element)books.get(0); //得到第一个book元素 
		//为第一本书添加一条属性 
		Attribute a = new Attribute("hot","true"); 
		book.setAttribute(a); 
		Element author = book.getChild("author"); //得到指定的字元素 
		author.setText("王五"); //将作者改为王五 
		//或 Text t = new Text("王五");book.addContent(t); 
		Element price = book.getChild("price"); //得到指定的字元素 
		//修改价格,比较郁闷的是我们必须自己转换数据类型,而这正是JAXB的优势 
		price.setText(Float.toString(50.0f)); 
		String indent = " "; 
		boolean newLines = true; 
		XMLOutputter outp = new XMLOutputter(indent,newLines,"gb2312"); 
		outp.output(doc, new FileOutputStream("exampleB.xml")); 
	} 
} 
==================
exampleA.xml
<?xml version="1.0" encoding="gb2312"?> 
<bookList> 
	<book> 
		<name>Java编程入门</name> 
		<author>张三</author> 
		<publishDate>2002-6-6</publishDate> 
		<price>35.0</price> 
	</book> 
	<book> 
		<name>XML在Java中的应用</name> 
		<author>李四</author> 
		<publishDate>2002-9-16</publishDate> 
		<price>92.0</price> 
	</book> 
</bookList> 
所需要的包要下载</Content>
<PostDateTime>2002-5-7 9:48:30</PostDateTime>
</Reply>
<Reply>
<PostUserNickName>九分半醉为红尘</PostUserNickName>
<rank>五级(中级)</rank>
<ranknum>user5</ranknum>
<credit>89</credit>
<ReplyID>4600833</ReplyID>
<TopicID>702164</TopicID>
<PostUserId>112142</PostUserId>
<PostUserName>scarab</PostUserName>
<Point>0</Point>
<Content>上面演示的是JDom</Content>
<PostDateTime>2002-5-7 9:49:10</PostDateTime>
</Reply>
<Reply>
<PostUserNickName></PostUserNickName>
<rank>一级(初级)</rank>
<ranknum>user1</ranknum>
<credit>98</credit>
<ReplyID>4603501</ReplyID>
<TopicID>702164</TopicID>
<PostUserId>247628</PostUserId>
<PostUserName>jevon00</PostUserName>
<Point>0</Point>
<Content>多谢大哥赐教,可是小弟还有个请求,哪里可以找到那些包的下载?</Content>
<PostDateTime>2002-5-7 12:49:50</PostDateTime>
</Reply>
<Reply>
<PostUserNickName>jacky</PostUserNickName>
<rank>五级(中级)</rank>
<ranknum>user5</ranknum>
<credit>105</credit>
<ReplyID>4603694</ReplyID>
<TopicID>702164</TopicID>
<PostUserId>30398</PostUserId>
<PostUserName>kkhui</PostUserName>
<Point>0</Point>
<Content>用dom可以参看javax.xml.parse.*;
Document doc = ...DocumentBuilderFactory->newDocumentBuilder->parse</Content>
<PostDateTime>2002-5-7 13:02:12</PostDateTime>
</Reply>
<Reply>
<PostUserNickName>九分半醉为红尘</PostUserNickName>
<rank>五级(中级)</rank>
<ranknum>user5</ranknum>
<credit>89</credit>
<ReplyID>4604088</ReplyID>
<TopicID>702164</TopicID>
<PostUserId>112142</PostUserId>
<PostUserName>scarab</PostUserName>
<Point>0</Point>
<Content>java.sun.com
www.xml.com
上去看看</Content>
<PostDateTime>2002-5-7 13:30:50</PostDateTime>
</Reply>
<Reply>
<PostUserNickName>无影</PostUserNickName>
<rank>二级(初级)</rank>
<ranknum>user2</ranknum>
<credit>100</credit>
<ReplyID>4611865</ReplyID>
<TopicID>702164</TopicID>
<PostUserId>71921</PostUserId>
<PostUserName>obliang</PostUserName>
<Point>20</Point>
<Content><%@ page contentType="text/html;charset=gb2312" %>
<!--这个JSP文件,是将数据库中得数据导入保存到xml文档中-->
<html>
<head>
<title>SQL connect Test</title>
</head>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="sql.UpsInforParser" %>
<!-- -->
<%
	String cname;
	String ename;
	String producer;
	String actor;
	String pic;
	String conn;
	int line = 0;
	BitSet bst = new BitSet(0);
	UpsInforParser parser = new UpsInforParser();
	String[] strArr = new String[50000];
	Class.forName("com.jnetdirect.jsql.JSQLDriver");
	conn = "jdbc:JSQLConnect://localhost/database=media/user=sa";
	Connection Conn = DriverManager.getConnection(conn);
	java.sql.Statement SQLStatement = Conn.createStatement();
	String Query = "SELECT ID, NAME_CH,NAME_EN,PRODUCER,ACTOR,PIC FROM MEDIAINFOR";
	ResultSet SQLResult = SQLStatement.executeQuery(Query);
%>
<table border = 1 cellspacing=0 cellpadding=0>
 <tr>
 <td width=20><a href="sqltestxml.jsp">ID</a></td>
 <td width=80>NAME_CH</td>
 <td width=80>NAME_EN</td>
 <td width=80>PRODUCER</td>
 <td width=80>ACTOR</td>
 <td width=100>PIC URL</td>
 </tr>
 <%
 strArr[line] = "<?xml version=\"1.0\" encoding=\"GB2312\"?>";
 line++;
 strArr[line] = "<DOCUMENT>";
 line++;
  while(SQLResult.next()){
  	  strArr[line++] = "<FILM>";
	  strArr[line++] = "<ID>"+SQLResult.getString(1)+"</ID>";
	  strArr[line++] = "<CNAME>"+SQLResult.getString(2)+"</CNAME>";
  	  strArr[line++] = "<ENAME>"+SQLResult.getString(3)+"</ENAME>";
	  strArr[line++] = "<PRODUCER>"+SQLResult.getString(4)+"</PRODUCER>";
	  strArr[line++] = "<ACTOR>"+SQLResult.getString(5)+"</ACTOR>";
	  strArr[line++] = "<IMG>"+SQLResult.getString(6)+"</IMG>";
  	  strArr[line++] = "</FILM>";
 %>
 <tr>
 <td width=20><%=SQLResult.getString(1)%></td>
 <td width=80><%=SQLResult.getString(2)%></td>
 <td width=80><%=SQLResult.getString(3)%></td>
 <td width=80><%=SQLResult.getString(4)%></td>
 <td width=80><%=SQLResult.getString(5)%></td>
 <td width=40><img src="<%=SQLResult.getString(6)%>"></td>	
 </tr>
 <%}
    strArr[line++] = "</DOCUMENT>";
	bst.set(line-1);
 out.print("the all acount are: "+line);
 parser.createDoc("..\\webapps\\test\\sql\\sqltest.xml",strArr,line);
 Conn.close();
 %>
</table>
绝对通过,我正在使用!</Content>
<PostDateTime>2002-5-7 22:53:42</PostDateTime>
</Reply>
<Reply>
<PostUserNickName>无影</PostUserNickName>
<rank>二级(初级)</rank>
<ranknum>user2</ranknum>
<credit>100</credit>
<ReplyID>4611871</ReplyID>
<TopicID>702164</TopicID>
<PostUserId>71921</PostUserId>
<PostUserName>obliang</PostUserName>
<Point>0</Point>
<Content>
下面是我调用的一个类,我套用了一般的DOM处理XML文档的方法,制作了相应的改动。
package sql;
import org.w3c.dom.*;
import org.apache.xerces.parsers.DOMParser;
import java.io.*;
public class UpsInforParser
{
	private String[] displayStrings = new String[5000];
	private String[] value = new String[5000];
	private int numberDisplayLines = 0;
	private Node  c;
	private Document doc;
	private  String[] str;
	private int k = 0;
 	private String index;
	public UpsInforParser(String[] data)
	{
		this.str = data;
	}
	public UpsInforParser()
	{
	}	
	public static void main(String[] args)
	{
		String[] s = {"tNAME","tIP","ZONE","POSITION","CODE"};
		UpsInforParser parser = new UpsInforParser(s);
//		parser.createDoc("data/upsinfor.xml");
		//for(int loopIndex = 0;loopIndex < numberDisplayLines;loopIndex++)
		//{
			//System.out.println(displayStrings[loopIndex]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -