Lor*_*sum 4 java xml dtd jaxb unmarshalling
我尝试使用JAXB(javax.xml.bind.JAXB;)解组文件XML文件(test.xml),但始终会出现以下错误:
[org.xml.sax.SAXParseException; systemId: file:/C:/Users/EXAMPLE/AppData/Local/Eclipse/workspace_4.4.0/EXAMPLE/test.xml; lineNumber: 2; columnNumber: 42; Externe DTD: Lesen von externer DTD "example.dtd" nicht erfolgreich, da "file"-Zugriff wegen der von der Eigenschaft "accessExternalDTD" festgelegten Einschränkung nicht zulässig ist.]
英文翻译:
Reading from external DTD "example.dtd" not succesfull , couse "File"-Access is not allowed by the Restriction set by the Proppertie "accessExternalDTD"
Run Code Online (Sandbox Code Playgroud)
已经尝试过的解决方案:
accessExternalDTD属性。注意事项:
<!DOCTYPE EXAMPLE SYSTEM
"example.dtd">该accessExternalDTD属性可以用系统属性进行控制javax.xml.accessExternalDTD,所以开始你的计划-Djavax.xml.accessExternalDTD=true,它应该工作。也可以在解组器上设置属性,请尝试以下操作:
unmarshaller.setProperty(javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD, Boolean.TRUE);
Run Code Online (Sandbox Code Playgroud)
import javax.xml.bind.*;
import javax.xml.stream.*;
import javax.xml.transform.stream.StreamSource;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Customer.class);
XMLInputFactory xif = XMLInputFactory.newFactory();
xif.setProperty(XMLInputFactory.SUPPORT_DTD, false);
XMLStreamReader xsr = xif.createXMLStreamReader(new StreamSource("input.xml"));
Unmarshaller unmarshaller = jc.createUnmarshaller();
Customer customer = (Customer) unmarshaller.unmarshal(xsr);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7258 次 |
| 最近记录: |