在用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()));

发表评论