首页javadomJava HTML/XML - 如何拦截XML DOM解析期间对外部实体的访问

Java HTML/XML - 如何拦截XML DOM解析期间对外部实体的访问

我们想知道如何拦截XML DOM解析期间对外部实体的访问。


import java.io.File;
import java.io.FileReader;
import java.net.URI;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;

public class Main {
  public static void main(String[] argv) throws Exception {
    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    builder.setEntityResolver(new MyResolver());
    Document doc = builder.parse(new File("infilename.xml"));
  }
}
class MyResolver implements EntityResolver {
  public InputSource resolveEntity(String publicId, String systemId) {
    try {
      URI uri = new URI(systemId);
      if ("file".equals(uri.getScheme())) {
        String filename = uri.getSchemeSpecificPart();
        return new InputSource(new FileReader(filename));
      }
    } catch (Exception e) {
    }
    return null;
  }
}