1、xml有哪些解析技術(shù)?區(qū)別是什么?
2、你在項(xiàng)目中用到了xml技術(shù)的哪些方面?如何實(shí)現(xiàn)的?
3、用jdom解析xml文件時(shí)如何解決中文問題?如何解析?
4、編程用JAVA解析XML的方式.
1、xml有哪些解析技術(shù)?區(qū)別是什么?
答:有DOM,SAX,STAX等
DOM:處理大型文件時(shí)其性能下降的非常厲害。這個(gè)問題是由DOM的樹結(jié)構(gòu)所造成的,這種結(jié)構(gòu)占用的內(nèi)存較多,而且DOM必須在解析文件之前把整個(gè)文檔裝入內(nèi)存,適合對(duì)XML的隨機(jī)訪問SAX:不現(xiàn)于DOM,SAX是事件驅(qū)動(dòng)型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個(gè)文件。當(dāng)遇到像文件開頭,文檔結(jié)束,或者標(biāo)簽開頭與標(biāo)簽結(jié)束時(shí),它會(huì)觸發(fā)一個(gè)事件,用戶通過在其回調(diào)事件中寫入處理代碼來處理XML文件,適合對(duì)XML的順序訪問STAX:StreamingAPI for XML (StAX)
2、你在項(xiàng)目中用到了xml技術(shù)的哪些方面?如何實(shí)現(xiàn)的?
答:用到了數(shù)據(jù)存貯,信息配置兩方面。在做數(shù)據(jù)交換平臺(tái)時(shí),將不能數(shù)據(jù)源的數(shù)據(jù)組裝成XML文件,然后將XML文件壓縮打包加密后通過網(wǎng)絡(luò)傳送給接收者,接收解密與解壓縮后再同XML文件中還原相關(guān)信息進(jìn)行處理。在做軟件配置時(shí),利用XML可以很方便的進(jìn)行,軟件的各種配置參數(shù)都存貯在XML文件中。
3、用jdom解析xml文件時(shí)如何解決中文問題?如何解析?
答:看如下代碼,用編碼方式加以解決
package test;
import java.io.*;
public class DOMTest
{
private String inFile = "c:people.xml";
private String outFile = "c:people.xml";
public static void main(String args[])
{
new DOMTest();
}
public DOMTest()
{
try
{
javax.xml.parsers.DocumentBuilderbuilder=javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();
org.w3c.dom.Document doc=builder.newDocument();
org.w3c.dom.Element root=doc.createElement_x("老師");
org.w3c.dom.Element wang=doc.createElement_x("王");
org.w3c.dom.Element liu=doc.createElement_x("劉");
wang.appendChild(doc.createTextNode("我是王老師"));
root.appendChild(wang);
doc.appendChild(root);
javax.xml.transform.Transformertransformer=javax.xml.transform.TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING,"gb2312");
transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT,"yes");
transformer.transform(newjavax.xml.transform.dom.DOMSource(doc),newjavax.xml.transform.stream.StreamResult(outFile));
}
catch (Exception e)
{
System.out.println (e.getMessage());
}
}
}
4、編程用JAVA解析XML的方式.
答:用SAX方式解析XML,XML文件如下:
王小明
信息學(xué)院
6258113
男,1955年生,博士,95年調(diào)入海南大學(xué)
事件回調(diào)類SAXHandler.java
import java.io.*;
import java.util.Hashtable;
import org.xml.sax.*;
public class SAXHandler extends HandlerBase
{
private Hashtable table = new Hashtable();
private String currentElement = null;
private String currentValue = null;
public void setTable(Hashtable table)
{
this.table = table;
}
public Hashtable getTable()
{
return table;
}
public void startElement(String tag, AttributeList attrs)
throws SAXException
{
currentElement = tag;
}
public void characters(char[] ch, int start, int length)
throws SAXException
{
currentValue = new String(ch, start, length);
}
public void endElement(String name) throws SAXException
{
if (currentElement.equals(name))
table.put(currentElement, currentValue);![[轉(zhuǎn)載]Xml方面xml有哪些解析技術(shù)?區(qū)別是什么?你在項(xiàng)目 ado和odbc區(qū)別 轉(zhuǎn)載](http://img.aihuau.com/images/02111102/02012047t01448d56126a106b98.jpg)
}
}
JSP內(nèi)容顯示源碼,SaxXml.jsp:
<HTML>
<HEAD>
<TITLE>剖析XML文件people.xml</TITLE>
</HEAD>
<BODY>
<%@ page errorPage="ErrPage.jsp"contentType="text/html;charset=GB2312"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.Hashtable"%>
<%@ page import="org.w3c.dom.*"%> <%@ page import="org.xml.sax.*"%>
<%@ pageimport="javax.xml.parsers.SAXParserFactory"%>
<%@ page import="javax.xml.parsers.SAXParser"%>
<%@ page import="SAXHandler"%>
<%
Filefile = new File("c:people.xml");
FileReader reader = new FileReader(file);
Parserparser;
SAXParserFactory spf =SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
SAXHandler handler = new SAXHandler();
sp.parse(new InputSource(reader), handler);
Hashtable hashTable = handler.getTable();
out.println("<TABLEBORDER=2><CAPTION>教師信息表</CAPTION>");out.println("<TR><TD>姓名</TD>"+ "<TD>" + (String)hashTable.get(newString("name")) +"</TD></TR>");
out.println("<TR><TD>學(xué)院</TD>"+ "<TD>" + (String)hashTable.get(newString("college"))+"</TD></TR>");
out.println("<TR><TD>電話</TD>"+ "<TD>" + (String)hashTable.get(newString("telephone")) +"</TD></TR>");
out.println("<TR><TD>備注</TD>"+ "<TD>" +
(String)hashTable.get(new String("notes")) +"</TD></TR>");
out.println("</TABLE>");
%>
</BODY>
</HTML>
愛華網(wǎng)


