I would like to work with SAXReader offline , the problem is that SAXReader checks for xml DTD compliance. I do not want to change DTD or anything else in XML. From a search on this website and other sources, I found 2 answers that did not help me :
- use EntityResolver to bypass network call
- use setIncludeExternalDTDDeclarations (false)
An example of what I was trying to do:
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")) {
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
I still canβt work offline, I advise ... thanks
Stacktrace:
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
source share