XML文件中不包含DTD声明的XML文件的Java DTD验证?

XML文件中不包含DTD声明的XML文件的Java DTD验证?,java,xml,http,dtd,Java,Xml,Http,Dtd,如何使用外部DTD文件验证XML文件 DTD将位于某个url上,例如 并且DTD在XML文件中没有引用,所以我需要在我的Javaservlet中这样做 我目前正在使用JDOM处理XML文件 感谢您提供任何帮助或指点此问题已由处理此问题已由处理如果XML文件中未指定DTD,您可以使用转换器将其添加,然后按如下所示对其进行解析: DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder

如何使用外部DTD文件验证XML文件

DTD将位于某个url上,例如

并且DTD在XML文件中没有引用,所以我需要在我的Javaservlet中这样做

我目前正在使用JDOM处理XML文件


感谢您提供任何帮助或指点

此问题已由

处理此问题已由

处理如果XML文件中未指定DTD,您可以使用转换器将其添加,然后按如下所示对其进行解析:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder db = factory.newDocumentBuilder();

//parse file into DOM
Document doc = db.parse(new File("file.xml"));
DOMSource source = new DOMSource(doc);

//now use a transformer to add the DTD element
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "/path/to/file.dtd");
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
transformer.transform(source, result);

//finally parse the result. 
//this will throw an exception if the doc is invalid
db.parse(new InputSource(new StringReader(writer.toString())));

如果XML文件中未指定DTD,则可以使用转换器将其添加到中,然后按如下所示对其进行解析:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder db = factory.newDocumentBuilder();

//parse file into DOM
Document doc = db.parse(new File("file.xml"));
DOMSource source = new DOMSource(doc);

//now use a transformer to add the DTD element
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "/path/to/file.dtd");
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
transformer.transform(source, result);

//finally parse the result. 
//this will throw an exception if the doc is invalid
db.parse(new InputSource(new StringReader(writer.toString())));

有没有可能用JDOM来做这件事?对于同样的问题有什么帮助,但是在Android中使用SAX解析吗?@dogbane你能帮助我如何使用你给出的代码吗?拜托,真的很紧急。。。我的xml文件也有同样的问题…@dogbane我的意思是,如何运行这段代码。。。我是java新手。。。处理xml和DTD的问题。。。请帮忙。。。提前感谢:)有没有可能用JDOM做到这一点?对于同样的问题,除了在Android中使用SAX解析之外,还有什么帮助吗?@dogbane您能帮我了解一下如何使用您给出的代码吗?拜托,真的很紧急。。。我的xml文件也有同样的问题…@dogbane我的意思是,如何运行这段代码。。。我是java新手。。。处理xml和DTD的问题。。。请帮忙。。。提前感谢:)