<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-348  評論-598  文章-0  trackbacks-0

    XML文件
    <?xml version="1.0"?>
    <note
            xmlns="http://www.w3school.com.cn"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.w3school.com.cn file:///D:/_dev_stu/xsdtest/src/note.xml">

        <to>George</to>
        <from>John</from>
        <heading>Reminder</heading>
        <body>Don't forget the meeting this weekend!</body>
    </note>
     
    XSD文件
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://www.w3school.com.cn"
               xmlns="http://www.w3school.com.cn"
               elementFormDefault="qualified">

        <xs:element name="note">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="to" type="xs:string"/>
                    <xs:element name="from" type="xs:string"/>
                    <xs:element name="heading" type="xs:string"/>
                    <xs:element name="body" type="xs:string"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>

    </xs:schema>
     
    測試代碼
    import org.dom4j.Document;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.SAXValidator;
    import org.dom4j.io.XMLWriter;
    import org.dom4j.util.XMLErrorHandler;

    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    import java.io.File;

    /**
    * Java XML校驗測試
    *
    * @author leizhimin,2008-9-4 14:42:35
    */

    public class ValidataXMLTest {
        public static void main(String[] args) {
            validateXMLByXSD();
            validateXMLByDTD();

        }

        /**
         * 通過XSD(XML Schema)校驗XML
         */

        public static void validateXMLByXSD() {
            String xmlFileName = "Q:\\_dev_stu\\xsdtest\\src\\note.xml";
            String xsdFileName = "Q:\\_dev_stu\\xsdtest\\src\\note.xsd";
            try {
                //創建默認的XML錯誤處理器
                XMLErrorHandler errorHandler = new XMLErrorHandler();
                //獲取基于 SAX 的解析器的實例
                SAXParserFactory factory = SAXParserFactory.newInstance();
                //解析器在解析時驗證 XML 內容。
                factory.setValidating(true);
                //指定由此代碼生成的解析器將提供對 XML 名稱空間的支持。
                factory.setNamespaceAware(true);
                //使用當前配置的工廠參數創建 SAXParser 的一個新實例。
                SAXParser parser = factory.newSAXParser();
                //創建一個讀取工具
                SAXReader xmlReader = new SAXReader();
                //獲取要校驗xml文檔實例
                Document xmlDocument = (Document) xmlReader.read(new File(xmlFileName));
                //設置 XMLReader 的基礎實現中的特定屬性。核心功能和屬性列表可以在 [url]http://sax.sourceforge.net/?selected=get-set[/url] 中找到。
                parser.setProperty(
                        "http://java.sun.com/xml/jaxp/properties/schemaLanguage",
                        "http://www.w3.org/2001/XMLSchema");
                parser.setProperty(
                        "http://java.sun.com/xml/jaxp/properties/schemaSource",
                        "file:" + xsdFileName);
                //創建一個SAXValidator校驗工具,并設置校驗工具的屬性
                SAXValidator validator = new SAXValidator(parser.getXMLReader());
                //設置校驗工具的錯誤處理器,當發生錯誤時,可以從處理器對象中得到錯誤信息。
                validator.setErrorHandler(errorHandler);
                //校驗
                validator.validate(xmlDocument);

                XMLWriter writer = new XMLWriter(OutputFormat.createPrettyPrint());
                //如果錯誤信息不為空,說明校驗失敗,打印錯誤信息
                if (errorHandler.getErrors().hasContent()) {
                    System.out.println("XML文件通過XSD文件校驗失敗!");
                    writer.write(errorHandler.getErrors());
                } else {
                    System.out.println("Good! XML文件通過XSD文件校驗成功!");
                }
            } catch (Exception ex) {
                System.out.println("XML文件: " + xmlFileName + " 通過XSD文件:" + xsdFileName + "檢驗失敗。\n原因: " + ex.getMessage());
                ex.printStackTrace();
            }
        }

        /**
         * 通過DTD校驗XML
         */

        public static void validateXMLByDTD() {
            //todo:暫時不用,以后再說吧
        }
    }
     
    運行結果
    Good! XML文件通過XSD文件校驗成功!

    方法二:

    最近對Schema 驗證研究了一下, 代碼如下:
    所需JAR包需要自己下載(版本一定要正確)

    public class SchemaValidation {


        public static void main(String[] args) {
            validate();
        }

        public static void validate() {
            try {
                SchemaValidation demo = new SchemaValidation();
                // Give the xml(標準化越來越近了) and schema name
                InputStream xml(標準化越來越近了)String = demo.getClass().getResourceAsStream("GBAInit.xml(標準化越來越近了)");
                InputStream schemaStr = demo.getClass().getResourceAsStream("GBAInitSchema.xsd");
       
                SAXReader reader = createSAXReader(schemaStr);
                System.out.println("XSD parse successfully !");
               
                Document document = reader.read(xml(標準化越來越近了)String);
                System.out.println("Successfully validation .. . ");
            } catch (DocumentException e) {
                System.out.println("Exception occurred: " + e);
                Throwable nestedException = e.getNestedException();
                if (nestedException != null) {
                    System.out.println("NestedException: " + nestedException);
                    nestedException.printStackTrace();
                } else {
                    e.printStackTrace();
                }
            } catch (Throwable t) {
                System.out.println("Exception occurred: " + t);
                t.printStackTrace();
            }
        }

        /** Registers the Verifier with the SAXReader */
        protected SAXReader createSAXReader(InputStream schemaURI) throws Exception {

            System.out.println("Loaded schema document: " + schemaURI);

            // use autodetection of schemas
            VerifierFactory factory = new com.sun.msv.verifier.jarv.TheFactoryImpl();
            Schema schema = factory.compileSchema(schemaURI);

            Verifier verifier = schema.newVerifier();
            verifier.setErrorHandler(new ErrorHandler() {
                public void error(SAXParseException e) {
                    System.out.println("ERROR: " + e);
                }

                public void fatalError(SAXParseException e) {
                    System.out.println("FATAL: " + e);
                }

                public void warning(SAXParseException e) {
                    System.out.println("WARNING: " + e);
                }
            });

            // now install the verifying filter
            VerifierFilter filter = verifier.getVerifierFilter();
            SAXReader reader = new SAXReader();
            reader.setxml(標準化越來越近了)Filter(filter);
            return reader;
        }

    本文來源于 WEB開發網 原文鏈接:http://www.cncms.com.cn/ajax/9977.htm




    ---------------------------------------------------------
    專注移動開發

    Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
    posted on 2010-03-11 11:11 TiGERTiAN 閱讀(2103) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 亚洲第一黄色网址| 日本免费一区尤物| 久久亚洲国产精品一区二区| 亚洲av日韩综合一区二区三区| 成人网站免费观看| 亚洲中文字幕久久精品无码VA| 免费做爰猛烈吃奶摸视频在线观看 | 最近中文字幕完整免费视频ww | 日日摸夜夜添夜夜免费视频| 亚洲AⅤ视频一区二区三区| 日本亚洲中午字幕乱码| 亚洲国产精品毛片av不卡在线| 未满十八私人高清免费影院| 亚洲日韩在线观看免费视频| 国产一级a毛一级a看免费人娇| 亚洲国产精品一区第二页 | 亚洲乱码国产乱码精品精| 在线免费观看伊人三级电影| 亚洲高清国产拍精品26U| 99久久精品国产免费| 亚洲剧情在线观看| 国产美女精品视频免费观看| 一级一级毛片免费播放| 久久91亚洲精品中文字幕| 波多野结衣在线免费视频| 亚洲日韩AV一区二区三区中文| 国产一级淫片a免费播放口之| 国产裸模视频免费区无码| 无码AV动漫精品一区二区免费 | 亚洲中文字幕伊人久久无码| 黄网站色视频免费在线观看的a站最新 | 亚洲国产精品线观看不卡| 免费特级黄毛片在线成人观看| 特色特黄a毛片高清免费观看| 一区二区三区亚洲| 免费大香伊蕉在人线国产| 日韩av无码免费播放| 中文字幕亚洲男人的天堂网络| 亚洲AⅤ永久无码精品AA| 日韩人妻无码精品久久免费一| 亚洲Av无码国产一区二区|