涓???XML ?ㄥ??锛?锛??? 棰?锛??虹?1 ??锛?涓?绛??惧害1 ??锛?杈??? ??锛?
102??XML ??妗e??涔?????绉?褰㈠?锛?瀹?浠?涔??存??浣???璐ㄥ?哄??锛?瑙f??XML ??妗f??????绉??瑰?锛????虹???
绛?锛?
- 涓ょ?褰㈠?锛?dtd 浠ュ??schema锛?
- ??璐ㄥ?哄??锛?schema ??韬???xml ??锛???浠ヨ?XML 瑙f???ㄨВ??(杩?涔???浠?DTD涓???灞?schema ???规??????)锛?
-
瑙f???瑰?锛???DOM,SAX,STAX 绛?锛?
DOM:澶???澶у????浠舵?跺?舵?ц?戒???????甯稿??瀹炽??杩?涓???棰?????OM ????缁???????????锛?杩?绉?缁??????ㄧ????瀛?杈?澶?锛???涓?DOM 蹇?椤诲?ㄨВ????浠朵??????翠釜??妗h??ュ??瀛?,????瀵?ML ?????鸿?块??锛?SAX:涓???浜?DOM,SAX ??浜?浠堕┍?ㄥ????XML 瑙f???瑰???瀹?椤哄?璇诲??XML ??浠讹?涓???瑕?涓?娆″?ㄩ?ㄨ?杞芥?翠釜??浠躲??褰????板????浠跺?澶达???妗g???锛???????绛惧?澶翠???绛剧????讹?瀹?浼?瑙???涓?涓?浜?浠讹??ㄦ?烽??杩??ㄥ?跺??璋?浜?浠朵腑???ュ???浠g???ュ???XML ??浠讹?????瀵?ML ??椤哄?璁块??锛?
STAX:Streaming API for XML (StAX)??
103??浣??ㄩ」??涓??ㄥ?颁?xml ????????浜??归??濡?浣?瀹??扮??? ??涓?绛??惧害??
绛?:?ㄥ?颁??版??瀛?璐?锛?淇℃????缃?涓ゆ?归?????ㄥ???版??浜ゆ?㈠钩?版?讹?灏?涓??芥?版??婧????版??缁?瑁???XML ??浠讹??跺??灏?XML ??浠跺??缂╂??????瀵?????杩?缃?缁?浼???缁??ユ?惰??锛??ユ?惰В瀵?涓?瑙e??缂╁??????XML ??浠朵腑杩????稿?充俊??杩?琛?澶??????ㄥ??杞?浠堕??缃??讹??╃??ML ??浠ュ??逛究??杩?琛?锛?杞?浠剁????绉???缃????伴?藉??璐???ML ??浠朵腑??
104????dom 瑙f??xml ??浠舵?跺?浣?瑙e?充腑????棰??濡?浣?瑙f??? ??杈??俱??
绛?锛???濡?涓?浠g??,?ㄧ????瑰???浠ヨВ??
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.DocumentBuilder builder =
javax.xml.parsers.DocumentBuilderFactory.
newInstance().newDocumentBuilder();
org.w3c.dom.Document doc = builder.newDocument();
org.w3c.dom.Element root = doc.createElement("??甯?");
org.w3c.dom.Element wang = doc.createElement("??");
org.w3c.dom.Element liu = doc.createElement("??");
wang.appendChild(doc.createTextNode("????????甯?"));
root.appendChild(wang);
doc.appendChild(root);
javax.xml.transform.Transformer transformer =
javax.xml.transform.TransformerFactory.
newInstance().newTransformer();
transformer.setOutputProperty(
javax.xml.transform.OutputKeys.ENCODING,"gb2312");
transformer.setOutputProperty(
javax.xml.transform.OutputKeys.INDENT, "yes");
transformer.transform(new
javax.xml.transform.dom.DOMSource(doc),
new javax.xml.transform.stream.StreamResult(outFile));
}catch (Exception e){
System.out.println (e.getMessage());
}
}
}
澶???
105??缂?绋???AVA 瑙f??XML ???瑰?????杈??俱??
绛?锛???AX ?瑰?瑙f??XML锛?XML ??浠跺?涓?锛?
<?xml version="1.0" encoding="gb2312"?>
<person>
<name>??灏???</name>
<college>淇℃??瀛???lt;/college>
<telephone>6258113</telephone>
<notes>??1955 骞寸??,??澹?锛?95 骞磋??ユ捣??澶у??lt;/notes>
</person>
澶???
浜?浠跺??璋?绫?AXHandler.java 锛?
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);
}
}
澶???
JSP ??瀹规?剧ず婧???,SaxXml.jsp:
<HTML>
<HEAD>
<TITLE>????XML ??浠?eople.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.*" %>
<%@ page import="javax.xml.parsers.SAXParserFactory" %>
<%@ page import="javax.xml.parsers.SAXParser" %>
<%@ page import="SAXHandler" %>
<%
File file = new File("c:\people.xml");
FileReader reader = new FileReader(file);
Parser parser;
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
SAXHandler handler = new SAXHandler();
sp.parse(new InputSource(reader), handler);
Hashtable hashTable = handler.getTable();
out.println("<TABLE BORDER=2><CAPTION>" +
"??甯?淇℃??琛?lt;/CAPTION>");
out.println("<TR><TD>濮???</TD>" + "<TD>" +
(String)hashTable.get(new String("name")) +
"</TD></TR>");
out.println("<TR><TD>瀛???lt;/TD>" + "<TD>" +
(String)hashTable.get(new String("college"))
+"</TD></TR>");
out.println("<TR><TD>?佃??</TD>" + "<TD>" +
(String)hashTable.get(new String("telephone"))
+ "</TD></TR>");
out.println("<TR><TD>澶?娉?lt;/TD>" + "<TD>" +
(String)hashTable.get(new String("notes"))
+ "</TD></TR>");
out.println("</TABLE>");
%>
</BODY>
</HTML>
澶???