簡體   English   中英

如何將本地DTD文件的驗證應用於java中的xml文件?

[英]How to apply validation of local DTD file to xml file in java?

我需要解析一堆傳入的XML文檔,但它不包含DTD聲明。 目前我正在使用SAX Parser解析xml文檔但沒有DTD驗證。 現在我想應用DTD驗證。 DTD由我自己創建。 如何使用自己創建的DTD(SAX解析器)驗證XML文件? 我找到了一些使用Transformer的教程,但都是針對DOM Parser的。

如何使用SAX Parser解析XML文件並應用DTD驗證。 任何幫助......

以下是我認為可以幫助您做到您想要的樣本:

private void loadXML(Reader reader) throws ParserConfigurationException, SAXException {
    SAXParserFactory parserFactory = SAXParserFactory.newInstance();
    parserFactory.setValidating(true);
    SAXParser parser = parserFactory.newSAXParser();
    parser.parse(new InputSource(reader), new MyHandler());
}

private static class MyHandler
        extends DefaultHandler {

    private static final String PREFS_DTD_URI = "http://www.example.com/dtd/document.dtd";

    public InputSource resolveEntity(String publicId, String systemId) throws SAXException {
        if (systemId.equals(PREFS_DTD_URI)) {
            InputSource is = new InputSource(new StringReader(PREFS_DTD));  // PREFS_DTD is a string containing actual DTD, any other Reader could be here
            is.setSystemId(PREFS_DTD_URI);
            return is;
        }
        // else use the default behaviour
        return null;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM