在用Java用DOM处理svg的时候出现了处理很慢的问题, 经研究发现是需要联网下载一个dtd文件导致变慢。
解决方案: 解析时删除DOCTYPE所在行(这可能会导致一些我不需要的数据的丢失)。
代码如下:
//删除DOCTYPE, 要不然要联网!! 慢死了!!! FileInputStream inputs = new FileInputStream(filename); Scanner sc = new Scanner(inputs); ByteArrayOutputStream os = new ByteArrayOutputStream (); while (sc.hasNextLine()){ String ln = sc.nextLine(); if (!ln.startsWith("<!DOCTYPE")) { os.write((ln+"\r\n").getBytes()); } } sc.close(); DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder; builder = factory.newDocumentBuilder(); Document doc = builder.parse(new ByteArrayInputStream(os.toByteArray()));
发表评论