<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 閱讀(2113) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 成在人线av无码免费高潮水| 亚洲色大成WWW亚洲女子| 黄a大片av永久免费| 国产免费午夜a无码v视频| 亚洲成av人片在线观看天堂无码| 亚洲国产成人久久一区WWW| 久久亚洲中文字幕无码| caoporm超免费公开视频| 69视频在线是免费观看| 日韩在线免费看网站| 水蜜桃亚洲一二三四在线| 亚洲熟妇丰满xxxxx| 真实乱视频国产免费观看| 日本系列1页亚洲系列| **aaaaa毛片免费同男同女| 亚洲国产成人乱码精品女人久久久不卡 | 精品视频免费在线| 久久免费视频精品| 国产精品冒白浆免费视频| 久久亚洲AV无码精品色午夜麻豆| 亚洲国产成人精品无码区花野真一 | 国产免费一区二区三区VR| 四虎精品成人免费视频| 亚洲一级免费毛片| 亚洲一区精品伊人久久伊人| 亚洲欧洲日产韩国在线| a在线视频免费观看在线视频三区| 亚洲综合av永久无码精品一区二区 | 久久久久成人精品免费播放动漫| 亚洲Av无码乱码在线播放| a一级毛片免费高清在线| 婷婷精品国产亚洲AV麻豆不片 | 国产又黄又爽又刺激的免费网址 | 成人国产网站v片免费观看| 亚洲国产成人一区二区精品区| 欧美色欧美亚洲另类二区| 黑人大战亚洲人精品一区| 99re热免费精品视频观看 | 午夜免费福利片观看| 亚洲日本va一区二区三区| 国产成人无码免费看视频软件 |