<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 {
                //創(chuàng)建默認的XML錯誤處理器
                XMLErrorHandler errorHandler = new XMLErrorHandler();
                //獲取基于 SAX 的解析器的實例
                SAXParserFactory factory = SAXParserFactory.newInstance();
                //解析器在解析時驗證 XML 內(nèi)容。
                factory.setValidating(true);
                //指定由此代碼生成的解析器將提供對 XML 名稱空間的支持。
                factory.setNamespaceAware(true);
                //使用當(dāng)前配置的工廠參數(shù)創(chuàng)建 SAXParser 的一個新實例。
                SAXParser parser = factory.newSAXParser();
                //創(chuàng)建一個讀取工具
                SAXReader xmlReader = new SAXReader();
                //獲取要校驗xml文檔實例
                Document xmlDocument = (Document) xmlReader.read(new File(xmlFileName));
                //設(shè)置 XMLReader 的基礎(chǔ)實現(xiàn)中的特定屬性。核心功能和屬性列表可以在 [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);
                //創(chuàng)建一個SAXValidator校驗工具,并設(shè)置校驗工具的屬性
                SAXValidator validator = new SAXValidator(parser.getXMLReader());
                //設(shè)置校驗工具的錯誤處理器,當(dāng)發(fā)生錯誤時,可以從處理器對象中得到錯誤信息。
                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:暫時不用,以后再說吧
        }
    }
     
    運行結(jié)果
    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(標(biāo)準(zhǔn)化越來越近了) and schema name
                InputStream xml(標(biāo)準(zhǔn)化越來越近了)String = demo.getClass().getResourceAsStream("GBAInit.xml(標(biāo)準(zhǔn)化越來越近了)");
                InputStream schemaStr = demo.getClass().getResourceAsStream("GBAInitSchema.xsd");
       
                SAXReader reader = createSAXReader(schemaStr);
                System.out.println("XSD parse successfully !");
               
                Document document = reader.read(xml(標(biāo)準(zhǔn)化越來越近了)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(標(biāo)準(zhǔn)化越來越近了)Filter(filter);
            return reader;
        }

    本文來源于 WEB開發(fā)網(wǎng) 原文鏈接:http://www.cncms.com.cn/ajax/9977.htm




    ---------------------------------------------------------
    專注移動開發(fā)

    Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
    posted on 2010-03-11 11:11 TiGERTiAN 閱讀(2103) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 久久亚洲国产成人亚| 亚洲最大成人网色香蕉| 日韩人妻无码精品久久免费一| 亚洲午夜免费视频| 国外成人免费高清激情视频| 一区二区三区视频免费观看| 久久久久久亚洲Av无码精品专口| 免费三级毛片电影片| 人人公开免费超级碰碰碰视频| 亚洲欧洲日韩不卡| 日韩免费视频播播| 久久国产精品一区免费下载| 伊人久久亚洲综合影院首页| 亚洲桃色AV无码| 成人人观看的免费毛片| 九九九精品视频免费| 亚洲人成在线中文字幕| 久久久久国产成人精品亚洲午夜| 91九色老熟女免费资源站| 高清免费久久午夜精品| 亚洲mv国产精品mv日本mv| 亚洲亚洲人成综合网络| 狠狠久久永久免费观看| 一区二区三区在线免费看| 特黄特色大片免费| 亚洲精品亚洲人成在线播放| 精品亚洲综合在线第一区| 免费看少妇作爱视频| 精品一区二区三区无码免费视频| 四虎精品成人免费视频| 亚洲AV成人一区二区三区在线看| 亚洲韩国精品无码一区二区三区 | 国产性爱在线观看亚洲黄色一级片| 最近最新高清免费中文字幕| 曰韩无码AV片免费播放不卡| 亚洲性色精品一区二区在线| 亚洲国产精品无码久久久蜜芽 | 午夜亚洲国产理论秋霞| 国产成人精品亚洲精品| 免费激情视频网站| 国产a视频精品免费观看|