package com.audaque.module; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.dom4j.io.SAXReader; import org.xml.sax.Attributes; import org.xml.sax.EntityResolver; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import java.io.ByteArrayInputStream; import java.io.IOException; public class MyXMLReader2SAX extends DefaultHandler implements EntityResolver { @Override public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { return new InputSource(new ByteArrayInputStream("<?xml version='1.0' encoding='UTF-8'?>".getBytes())); } java.util.Stack tags = new java.util.Stack(); public MyXMLReader2SAX() { super(); } public static void main(String args[]) { long lasting = System.currentTimeMillis(); try { SAXParserFactory sf = SAXParserFactory.newInstance(); sf.setValidating(false); SAXParser sp = sf.newSAXParser(); SAXReader reader1 = new SAXReader(); reader1.setEntityResolver(new MyXMLReader2SAX()); // ignore dtd MyXMLReader2SAX reader = new MyXMLReader2SAX(); sp.parse(new InputSource("F:\\BaiduNetdiskDownload\\dblp.xml\\dblp.xml"), reader); } catch (Exception e) { e.printStackTrace(); } System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + "毫秒"); } public void characters(char ch[], int start, int length) throws SAXException { String tag = (String) tags.peek(); if (tag.equals("article")) { System.out.print("article:" + new String(ch, start, length)); } else if (tag.equals("mdate")) { System.out.print("mdate:" + new String(ch, start, length)); } else if (tag.equals("key")) { System.out.print("key:" + new String(ch, start, length)); } else if (tag.equals("author")) { System.out.print("作者:" + new String(ch, start, length)); } else if (tag.equals("title")) { System.out.println("标题:" + new String(ch, start, length)); } else if (tag.equals("pages")) { System.out.println("页码:" + new String(ch, start, length)); } else if (tag.equals("year")) { System.out.println("年份:" + new String(ch, start, length)); } else if (tag.equals("volume")) { System.out.println("volume:" + new String(ch, start, length)); } else if (tag.equals("number")) { System.out.println("number:" + new String(ch, start, length)); } else if (tag.equals("url")) { System.out.println("url:" + new String(ch, start, length)); } else if (tag.equals("ee")) { System.out.println("ee:" + new String(ch, start, length)); } /* if (tag.equals("journal")) { System.out.println("标题:" + new String(ch, start, length)); }*/ } public void startElement(String uri, String localName, String qName, Attributes attrs) { tags.push(qName); } }
xml动态读取分段读取
最新推荐文章于 2019-08-22 09:48:43 发布