JSP DOM解析器 : XML « JSP « Java 教程

En
Java 教程
1. 语言基础
2. 数据类型
3. 操作符
4. 流程控制
5. 类定义
6. 开发相关
7. 反射
8. 正则表达式
9. 集合
10. 线
11. 文件
12. 泛型
13. 本土化
14. Swing
15. Swing事件
16. 二维图形
17. SWT
18. SWT 二维图形
19. 网络
20. 数据库
21. Hibernate
22. JPA
23. JSP
24. JSTL
25. Servlet
26. Web服务SOA
27. EJB3
28. Spring
29. PDF
30. 电子邮件
31. 基于J2ME
32. J2EE应用
33. XML
34. 设计模式
35. 日志
36. 安全
37. Apache工具
38. 蚂蚁编译
39. JUnit单元测试
Java
Java 教程 » JSP » XML 
23. 53. 1. JSP DOM解析器

Jsp code

<!--
Sams Teach Yourself JavaServer Pages in 21 Days (Paperback)
by Steven Holzner (Author), Steve Holzner (Author)

# Publisher: Sams; 1st edition (September 192002)
# Language: English
# ISBN-100672324490
# ISBN-13978-0672324499
-->

<%@ page import="javax.xml.parsers.*, org.xml.sax.*, org.xml.sax.helpers.*, org.w3c.dom.*, java.io.*"
 %>

<%!
public class xparser 
{
    String displayStrings[] new String[1000];
    int numberDisplayLines = 0;

    public String[] displayDocument(String uri
    {
        try {

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

        DocumentBuilder db = null;
        try {
            db = dbf.newDocumentBuilder();
        
        catch (ParserConfigurationException pce) {}

        Document document = null;
        document = db.parse(uri);

        numberDisplayLines = 0;
        display(document, "");

        catch (Exception e) {
            e.printStackTrace(System.err);
        }

        return displayStrings;
    

    public void display(Node node, String indent
    {
        if (node == null) {
            return;
        }

        int type = node.getNodeType();

        switch (type) {
            case Node.DOCUMENT_NODE: {
                displayStrings[numberDisplayLines= indent;
                displayStrings[numberDisplayLines+= "&lt;?xml version=\"1.0\" encoding=\""+
                  "UTF-8" "\"?&gt;";
                numberDisplayLines++;
                display(((Document)node).getDocumentElement()"");
                break;
             }

             case Node.ELEMENT_NODE: {
                 displayStrings[numberDisplayLines= indent;
                 displayStrings[numberDisplayLines+= "&lt;";
                 displayStrings[numberDisplayLines+= node.getNodeName();

                 int length = (node.getAttributes() != null? node.getAttributes().getLength() 0;
                 Attr attributes[] new Attr[length];
                 for (int i = 0; i < length; i++) {
                     attributes[i(Attr)node.getAttributes().item(i);
                 }

                 for (int i = 0; i < attributes.length; i++) {
                     Attr attribute = attributes[i];
                     displayStrings[numberDisplayLines+= " ";
                     displayStrings[numberDisplayLines+= attribute.getNodeName();
                     displayStrings[numberDisplayLines+= "=\"";
                     displayStrings[numberDisplayLines+= attribute.getNodeValue();
                     displayStrings[numberDisplayLines+= "\"";
                 }
                 displayStrings[numberDisplayLines+= "&gt;";

                 numberDisplayLines++;

                 NodeList childNodes = node.getChildNodes();
                 if (childNodes != null) {
                     length = childNodes.getLength();
                     indent += "&nbsp;&nbsp;&nbsp;&nbsp;";   
                     for (int i = 0; i < length; i++ ) {
                        display(childNodes.item(i), indent);
                     }
                 }
                 break;
             }

             case Node.CDATA_SECTION_NODE: {
                 displayStrings[numberDisplayLines= indent;
                 displayStrings[numberDisplayLines+= "&lt;![CDATA[";
                 displayStrings[numberDisplayLines+= node.getNodeValue();
                 displayStrings[numberDisplayLines+= "]]&gt;";
                 numberDisplayLines++;
                 break;
             }

             case Node.TEXT_NODE: {
                 displayStrings[numberDisplayLines= indent;
                 String newText = node.getNodeValue().trim();
                 if(newText.indexOf("\n"&& newText.length() 0) {
                     displayStrings[numberDisplayLines+= newText;
                     numberDisplayLines++;
                 }
                 break;
             }

             case Node.PROCESSING_INSTRUCTION_NODE: {
                 displayStrings[numberDisplayLines= indent;
                 displayStrings[numberDisplayLines+= "&lt;?";
                 displayStrings[numberDisplayLines+= node.getNodeName();
                 String text = node.getNodeValue();
                 if (text != null && text.length() 0) {
                     displayStrings[numberDisplayLines+= text;
                 }
                 displayStrings[numberDisplayLines+= "?&gt;";
                 numberDisplayLines++;
                 break;
            }    
        }

        if (type == Node.ELEMENT_NODE) {
            displayStrings[numberDisplayLines= indent.substring(0, indent.length() 24);
            displayStrings[numberDisplayLines+= "&lt;/";
            displayStrings[numberDisplayLines+= node.getNodeName();
            displayStrings[numberDisplayLines+= "&gt;";
            numberDisplayLines++;
            indent += "    ";
        }
    
}
%>

<HTML>
  <HEAD>
    <TITLE>Parsing an XML Document With DOM</TITLE>
  </HEAD>

  <BODY>
    <h1>Parsing an XML Document With DOM</h1>

    <% xparser p = new xparser()

        String[] s = p.displayDocument(application.getRealPath("/""test.xml");
 
        for(int i = 0; i < s.length; i++){
            if(s[i!= null){
    %>
            <%= s[i%><BR>
    <%
            }
        }
    %>
    </BODY>
</HTML>

XML demo file

<a>

   <b>
   
   </b>
</a>
  Download:  DOMParserInJSP.zip( 2 k)
23. 53. XML
23. 53. 1. JSP DOM解析器
23. 53. 2. JSP的SAX解析器
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.