我想离线使用SAXReader,问题是SAXReader正在验证xml是否符合DTD.我不想更改
XML中的DTD或其他任何内容.通过在本网站和其他来源搜索,我发现2个答案对我没有帮助:
>使用EntityResolver绕过网络呼叫
>使用setIncludeExternalDTDDeclarations(false)
我试图做的例子:
protected Document getPlistDocument() throws MalformedURLException,
DocumentException {
SAXReader saxReader = new SAXReader();
saxReader.setIgnoreComments(false);
saxReader.setIncludeExternalDTDDeclarations(false);
saxReader.setIncludeInternalDTDDeclarations(true);
saxReader.setEntityResolver(new MyResolver());
Document plistDocument = saxReader.read(getDestinationFile().toURI().toURL());
return plistDocument;
}
public class MyResolver implements EntityResolver {
public InputSource resolveEntity (String publicId, String systemId)
{
if (systemId.equals("http://www.myhost.com/today")) {
// if we want a custom implementation, return a special input source
return null;
} else {
// use the default behaviour
return null;
}
}
}
我仍然无法离线工作,请建议……谢谢
堆栈跟踪:
14:20:44,358 ERROR [ApplicationBuilder] iphone build failed: Resource Manager - Problem handle Root.plist: www.apple.com Nested exception: www.apple.com
com.something.builder.sourcemanager.exception.SourceHandlingException: Resource Manager - Problem handle Root.plist: www.apple.com Nested exception: www.apple.com
****
****
Caused by: org.dom4j.DocumentException: www.apple.com Nested exception: www.apple.com
at org.dom4j.io.SAXReader.read(SAXReader.java:484)
at org.dom4j.io.SAXReader.read(SAXReader.java:291)
... 10 more