`
mypengkun
  • 浏览: 14058 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

JSP DOM解析器

    博客分类:
  • Java
阅读更多

<!--
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>

分享到:
评论

相关推荐

    JSP开发解析器

    使用DOM解析器,首先需要导入`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`等类。下面是一个简单的例子: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom....

    DOM编辑器用于JSP

    DOM是一种独立于语言和平台的XML解析模型。给出了支持DOM核心模型和多种DOM扩展规范的XML编辑器ONCEXMLEditor的实现。ONCEXMLEditor具有高效的XML验证和序列化性能,同时提供给用户多种功能,包括按需遍历文档、提供上...

    JSP基于dom解析xml实例详解.docx

    本实例主要讲解如何在JSP中利用DOM解析XML文件,包括XML文件的读取、数据匹配以及数据写入。 首先,我们需要创建一个简单的User实体类,如`User`,包含姓名(name)、密码(pwd)和电子邮件(email)属性及相应的...

    jsp操作xml源码,解析器为DOM和SAX

    1. DOM解析器:DOM是一种基于树形结构的XML解析方法,它将整个XML文档加载到内存中形成一个文档对象模型,允许开发者通过节点遍历、查找和修改XML内容。这种解析方式的优点在于可以方便地对XML进行任意位置的操作,...

    jsp实现XML解析文档

    在JSP中使用SAX解析,需要实现SAX解析器的事件监听接口,如`DefaultHandler`,并在解析过程中处理相应的事件。例如,当解析器遇到`&lt;Name&gt;`元素时,会调用`startElement`方法,开发者可以在该方法中记录或处理数据。 ...

    JSP页面解析XML并且存入数据库

    在Java中,可以使用`java.io`包中的类如`FileInputStream`来打开文件,然后使用`javax.xml.parsers.DocumentBuilderFactory`和`DocumentBuilder`来创建DOM解析器实例并解析XML文件。解析完成后,`Document`对象将...

    JSP解析xml成绩管理系统

    DOM解析器将整个XML文档加载到内存中,形成一个树形结构,便于遍历和访问;而SAX解析器则采用事件驱动模型,逐行读取,节省内存但处理复杂文档时效率较低。对于大规模成绩数据,建议使用SAX。 3. **JSP与数据库存储...

    jsp/servlet投票管理系统myeclipse 8.6.1+tomcat7.0.11+xml(dom4j解析)

    XML(eXtensible Markup Language)在此系统中扮演了数据存储和解析的重要角色,这里我们主要采用DOM4J库进行XML处理。 1. JSP与Servlet基础: JSP是Java Web应用中的视图层技术,它允许开发者将HTML代码和Java...

    dom实现xml的增删查改,登录界面利用jsp实现(美观)

    以下是一个简单的示例,展示了如何使用Java的DOM解析器实现XML的增删查改: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; ...

    Jsoup 解析JSP

    jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。 但是他不支持JSP页面,例如不支持: 1、; ...

    Java中四种XML解析技术

    DOM解析器会一次性加载整个XML文档到内存中,形成一个完整的树形结构,允许开发者通过遍历树来访问任何节点。这种解析方式方便了数据的修改和查询,但缺点是对内存和CPU的要求较高,不适合处理大型XML文件。 2. SAX...

    JSP实现对XML读写

    DOM解析器会构建整个文档的结构,允许开发者通过遍历树形结构来访问或修改数据。在JSP中,可以使用DOM API来读取XML文件内容,如获取指定元素、属性等,并实现向XML文件中写入新的数据信息。 除了DOM,JDOM也是一个...

    xml解析 (jsp技术)

    - DOM解析器可以方便地修改XML文档,如添加、删除或更新元素和属性。例如,增加一个元素: ```java Element newElement = doc.createElement("newElement"); doc.getDocumentElement().appendChild(newElement)...

    XML文件解析问题.pdf

    本文对四种主流的 XML 文件解析方案进行了比较,包括 DOM(JAXP Crimson 解析器)、SAX(JAXP Crimson 解析器)、JDOM 和 dom4j。比较的结果表明,DOM 解析方式具有较高的解析速度,但占用较高的内存,而 SAX 解析...

    通过DOM和Ajax使用XML_从菜鸟到专家2006

    2. **DOM解析**:DOM解析器将XML文档转化为内存中的对象结构,开发者可以使用编程语言(如JavaScript、C#或Java)通过DOM API来查找、修改、添加和删除节点。理解DOM树的概念,掌握节点遍历和操作的方法,是使用DOM...

    JSP XML实现谷歌天气预报

    但是,由于JSTL的XML标签库并不支持所有XML操作,对于更复杂的解析需求,可能需要借助Java代码,比如创建一个DOM解析器实例,或者使用SAX解析器逐事件处理XML流。 在实际应用中,我们还需要关注**安全性**和**错误...

    jsp+access 在线投票

    JSP通过DOM或SAX解析器来读取和解析XML,将数据展示在网页上或用于其他业务逻辑。 综上所述,这个项目涵盖了以下核心知识点: 1. **JSP**:Java Server Pages,用于创建动态网页的技术,结合Java Servlet和...

    《动态Web数据库技术基于JSP和XML技术实现》xml解析PPT优秀资料.ppt

    解析器分为两种主要类型:DOM(Document Object Model)和SAX(Simple API for XML)。 DOM是一种基于对象的API,由W3C制定为官方标准。它将XML文档转换为一棵树形结构,每个节点代表XML文档的一个部分,使得开发者...

Global site tag (gtag.js) - Google Analytics