⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 documentbuilder.java

📁 Nano的XML解析器
💻 JAVA
字号:
/* DocumentBuilder.java                                            NanoXML/Java * * $Revision: 1.1.1.1 $ * $Date: 2001/07/17 18:37:28 $ * $Name:  $ * * This file is part of NanoXML 2 for Java. * Copyright (C) 2001 Marc De Scheemaecker, All Rights Reserved. * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from the * use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * *  1. The origin of this software must not be misrepresented; you must not *     claim that you wrote the original software. If you use this software in *     a product, an acknowledgment in the product documentation would be *     appreciated but is not required. * *  2. Altered source versions must be plainly marked as such, and must not be *     misrepresented as being the original software. * *  3. This notice may not be removed or altered from any source distribution. */import java.io.*;import java.util.*;import net.n3.nanoxml.*;public class DocumentBuilder    implements IXMLBuilder{    private static Hashtable classes;    private Stack elements;    private DocumentElement topElement;    static {        classes = new Hashtable();        classes.put("Chapter", Chapter.class);        classes.put("Paragraph", Paragraph.class);    }    public void startBuilding(String systemID,                              int    lineNr)    {        this.elements = new Stack();        this.topElement = null;    }    public void newProcessingInstruction(String target,                                         Reader reader)    {        // nothing to do    }    public void startElement(String name,                             String nsPrefix,                             String nsSystemID,                             String systemID,                             int    lineNr)    {        DocumentElement elt = null;        try {            Class cls = (Class) classes.get(name);            elt = (DocumentElement) cls.newInstance();        } catch (Exception e) {            // ignore the exception        }        this.elements.push(elt);        if (this.topElement == null) {            this.topElement = elt;        }    }    public void endElement(String name,                           String nsPrefix,                           String nsSystemID)    {        DocumentElement child = (DocumentElement) this.elements.pop();        if (! this.elements.isEmpty()) {            DocumentElement parent = (DocumentElement) this.elements.peek();            parent.addChild(child);        }    }    public void addAttribute(String key,                             String nsPrefix,                             String nsSystemID,                             String value,                             String type)    {        DocumentElement child = (DocumentElement) this.elements.peek();        child.setAttribute(key, value);    }    public void elementAttributesProcessed(String name,                                           String nsPrefix,                                           String nsSystemID)    {        // nothing to do    }        public void addPCData(Reader reader,                          String systemID,                          int    lineNr)        throws IOException    {        StringBuffer str = new StringBuffer(1024);        char[] buf = new char[1024];        for (;;) {            int size = reader.read(buf);            if (size < 0) {                break;            }            str.append(buf, 0, size);        }        this.addAttribute("#PCDATA", null, null, str.toString(), "CDATA");    }    public Object getResult()    {        return topElement;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -