编程用JAVA解析XML 的方式.

行业问题 方式 已帮助 人

编程用JAVA解析XML 的方式.

热搜:cgi程序的参数传递可采用几种方式

答案解析

难度★★☆ 搜索
  • 正确答案:

    :用SAX 方式解析XML,XML 文件如下:
    <?xml version=1.0 encoding=gb2312?>
    <person>
    <name>王小明</name>
    <college>信息学院</college>
    <telephone>6258113</telephone>
    <notes>男,1955 年生,博士,95 年调入海南大学</notes>
    </person>
    事件回调类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);
    }
    }
    JSP 内容显示源码,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.* %>
    <%@ 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$amp;>amp;$lt;CAPTION>教师信息表</CAPTION>);
    out.println(<TR$amp;>amp;$lt;TD>姓名</TD> + <TD> +
    (String)hashTable.get(new String(name)) + </TD$amp;>amp;$lt;/TR>);
    out.println(<TR$amp;>amp;$lt;TD>学院</TD> + <TD> +
    (String)hashTable.get(new String(college))+</TD$amp;>amp;$lt;/TR>);
    out.println(<TR$amp;>amp;$lt;TD>电话</TD> + <TD> +
    (String)hashTable.get(new String(telephone)) + </TD$amp;>amp;$lt;/TR>);
    out.println(<TR$amp;>amp;$lt;TD>备注</TD> + <TD> +
    (String)hashTable.get(new String(notes)) + </TD$amp;>amp;$lt;/TR>);
    out.println(</TABLE>);
    %>
    </BODY>
    </HTML>