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

📄 xmlparser.java

📁 用JGraph编的软件
💻 JAVA
字号:
package org.jgpd.io.jbpm.xml;

import java.util.*;
import java.io.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;

public class XmlParser {

  public static void main(String[] args) {
    try {
      XmlElement rootElement = XmlParser.parse(new FileInputStream(new File(args[0])));
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }
  }

  public static XmlElement parse(InputStream inputStream) {
    return parse( new InputSource( inputStream ) );
  }

  public static XmlElement parse(Reader reader) {
    return parse( new InputSource( reader ) );
  }

  public static XmlElement parse(InputSource inputSource) {
    XmlElement rootElement = null;
    ParserContentHandler defaultHandler = new ParserContentHandler();

    SAXParserFactory factory = SAXParserFactory.newInstance();
    try {
      SAXParser saxParser = factory.newSAXParser();
      saxParser.parse(inputSource, defaultHandler);
      rootElement = defaultHandler.getRootElement();
    } catch (Throwable t) {
      t.printStackTrace();
    }
    return rootElement;
  }
  
  private static class ParserContentHandler extends DefaultHandler {

    public void startElement(String namespaceURI, String localName, String qName, Attributes atts) {
      XmlElement newElement = new XmlElement(qName);

      Map attributeMap = new HashMap();
      for (int i = 0; i < atts.getLength(); i++) {
        attributeMap.put(atts.getQName(i), atts.getValue(i));
      }

      newElement.setAttributes(attributeMap);

      int elementStackSize = elementStack.size();
      if (elementStackSize > 0) {
        XmlElement containingElement = (XmlElement) elementStack.getLast();
        containingElement.addChild(newElement);
      } else {
        rootElement = newElement;
      }

      elementStack.add(newElement);
    }

    public void endElement(String namespaceURI, String localName, String qName) {
      elementStack.removeLast();
    }

    public void characters(char[] ch, int start, int length) {
      String text = new String(ch, start, length).trim();
      if (!"".equals(text)) {
        XmlElement element = (XmlElement) elementStack.getLast();
        element.addText(text);
      }
    }

    public XmlElement getRootElement() {
      return rootElement;
    }

    private LinkedList elementStack = new LinkedList();
    private XmlElement rootElement = null;
  }

  private static final String LINESEPARATOR = System.getProperty("line.separator");
}

⌨️ 快捷键说明

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