您好,我有一个包含此 DTD 的 XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.2.014/cXML.dtd">
在 Java(IBM) 中,我使用它来解析 xml:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(true);
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(xml));
domdoc = builder.parse(is);
但是当这个代理被执行时,我会在代码 builder.parse(is) 处收到一个错误。这是日志:
29-03-2017 13:56:00 HTTP JVM: java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key connect_not_allowed
29-03-2017 13:56:00 HTTP JVM: at java.util.ResourceBundle.getObject(ResourceBundle.java:502)
29-03-2017 13:56:00 HTTP JVM: at java.util.ResourceBundle.getString(ResourceBundle.java:516)
29-03-2017 13:56:00 HTTP JVM: at lotus.notes.JavaString.getFormattedString(Unknown Source)
29-03-2017 13:56:00 HTTP JVM: at lotus.notes.AgentSecurityManager.checkConnect(Unknown Source)
29-03-2017 13:56:00 HTTP JVM: at sun.net.www.http.HttpClient.openServer(HttpClient.java:549)
29-03-2017 13:56:00 HTTP JVM: at sun.net.www.http.HttpClient.<init>(HttpClient.java:227)
29-03-2017 13:56:00 HTTP JVM: at sun.net.www.http.HttpClient.New(HttpClient.java:313)
29-03-2017 13:56:00 HTTP JVM: at sun.net.www.http.HttpClient.New(HttpClient.java:332)
29-03-2017 13:56:00 HTTP JVM: at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.ja
29-03-2017 13:56:00 HTTP JVM: at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:936)
29-03-2017 13:56:00 HTTP JVM: at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:854)
29-03-2017 13:56:00 HTTP JVM: at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1208)
29-03-2017 13:56:00 HTTP JVM: at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
29-03-2017 13:56:00 HTTP JVM: at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source)
29-03-2017 13:56:00 HTTP JVM: at org.apache.xerces.impl.XMLEntityManager.startDTDEntity(Unknown Source)
29-03-2017 13:56:00 HTTP JVM: at org.apache.xerces.impl.XMLDTDScannerImpl.setInputSource(Unknown Source)
29-03-2017 13:56:00 HTTP JVM: at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source)
29-03-2017 13:56:00 HTTP JVM: at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
29-03-2017 13:56:00 HTTP JVM: at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
29-03-2017 13:56:00 HTTP JVM: at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
29-03-2017 13:56:00 HTTP JVM: at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
29-03-2017 13:56:00 HTTP JVM: at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
29-03-2017 13:56:00 HTTP JVM: at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
29-03-2017 13:56:00 HTTP JVM: at JavaAgent.NotesMain(Unknown Source)
29-03-2017 13:56:00 HTTP JVM: at lotus.domino.AgentBase.runNotes(Unknown Source)
29-03-2017 13:56:00 HTTP JVM: at lotus.domino.NotesThread.run(Unknown Source)
等等
但是当我添加这一行时:
factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
然后它工作......
问题:我可以使用 Java 中的 dtd 模式验证 xml,如果可以,如何验证?