-1

您好,我有一个包含此 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,如果可以,如何验证?

dtd:http: //xml.cXML.org/schemas/cXML/1.2.014/cXML.dtd

4

1 回答 1

0

代理需要设置为允许受限操作(服务器端):

在此处输入图像描述

于 2017-04-11T09:23:03.687 回答