亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

模式驗證結構-JAXP 1.3 的特性

2019-11-18 12:46:51
字體:
來源:轉載
供稿:網友

  xml 處理的java API (JAXP) 1.3在Java 2 平臺里已經首先引入了, 標準版(J2SE) 5.0 并且同樣也在目前已可使用的Java Web Services Developer Pack (Java WSDP)中 。 JAXP 1.3 新增了一個模式驗證結構(SVF), 也叫驗證API, 它提供了依靠模式高效驗證XML的高級能力。SVF同樣也提供了比JAXP 1.2中更高的執行效率。
  
  在考察SVF之前, 我們看看早期的模式驗證方法。以下的代碼片斷示范了SAX解析的方法:
  SAXParserFactory sf = SAXParserFactory.newInstance();
  sf.setNamespaceAware(true);
  sf.setValidating(true);
  SAXParser sp = sf.newSAXParser();
  sp.setPRoperty(
  SCHEMA_LANGUAGE, XMLConstants.W3C_XML_SCHEMA_NS_URI);
  sp.setProperty(SCHEMA_SOURCE, schema);  sp.parse(new File(xml), dh);
  
  基本的步驟是:
  
  1.創建一個SAXParserFactory 對象。
  
  2.配置SAXParserFactory對象來生成支持XML命名空間的分析程序, 以及需要解析的驗證文檔。
  
  3.創建一個SAX 分析程序。
  
  4.設置SAX 分析程序屬性的模式語言和模式來源。在本例中為W3C XML模式。
  
  5.解析文件。
  
  注重,這個過程的耦合驗證和XML處理。
  
  作為比較, SVF方法中, XML文件模式驗證從XML 處理中分離出來。SVP方法的第一步是編譯模式:
  
  final String sl = XMLConstants.W3C_XML_SCHEMA_NS_URI;  SchemaFactory factory = SchemaFactory.newInstance(sl);  StreamSource ss = new StreamSource("mySchema.xsd");  Schema schema = factory.newSchema(ss);
  
  SchemaFactory是一個模式編譯器。它讀指定的模式, 根據指定的模式語言的約束來檢查模式語法和語義, 并且返回一個在內存中不變的Schema對象。不可變意味著一旦創建了Schema對象約束設置就不可改變。一個應用程序使用同一個Schema對象驗證同樣的文件兩次也總會得到同樣的結果。
  
  然后,您使用模式驗證一個XML文件。根據你的需要將有三個方法可供選擇:
  
  ·在DocumentBuilderFactory 或SAXParserFactory上設置了Schema實例
  
  ·創建一個Validator
  
  ·創建一個ValidatorHandler (驗證SAX流)
  
  所有這三個方法都保證, XML文件只在從Schema實例中獲得的模式中有效。
  
  查看第一種方法, 在一個factory上設置Schema實例:
  
  SAXParserFactory spf = SAXParserFactory.newInstance();  spf.setSchema(schema);  SAXParser parser = spf.newSAXParser();  parser.parse(<XML DOCUMENT>);
  
  在這里, 同一個Schema實例傳輸到所有的由SAXParserFactory創建的SAXParser實例中。SAXParser對象解析XML 文件并且同時驗證它所依靠的Schema實例。 由于SAXParser并不為需要解析的每個XML文件都反復裝載模式,這個方法可為整個模式處理提高相當的效率。與前面的方法比較,前面需要為每個需要驗證的XML文件重復的裝載指定的模式。
  
  在您裝載一個Schema對象到內存以后, 您能采用第二個方法,通過Schema對象使用Validator 驗證XML 文件。首先您從Schema對象中創建一個Validator 對象。 然后調用在Validator 對象中的validate() 方法來驗證:
  
  Validator v = schema.newValidator();  v.validate(new StreamSource(xml));
  
  Validator對象接受java.xml.transform.Source作為輸入。 這意味著, 它可接受基于事件, SAX 源(SAXSource) 和基于對象, 文檔對象模型(DOM) 源(DOMSource) 。 接受DOMSource作為輸入, Validator能由指定的Schema對象驗證一個在內存中的DOM文件或節點。
  
  Validator v = schema.newValidator();  v.validate(new DOMSource(<DOM NODE>));
  
  假如要驗證一個DOM 節點或指定的SAXSource,您也可考慮Validator方法。既使SAX 驅動器的執行是來自另外的一個供營商這個方法仍然可以運作。
  
  第三個方法是創建一個非凡設計的javax.xml.validation.ValidatorHandler來驗證SAX 事件:
  
  SAXParserFactory spf = SAXParserFactory.newInstance();  spf.setNamespaceAware(true);  XMLReader reader = spf.newSAXParser().getXMLReader();  ValidatorHandler vh = schema.newValidatorHandler();  //key is to set "ValidatorHandler" as ContentHandler  //so that SAX event can be validated  reader.setContentHandler(vh);  reader.parse(xml);
  
  注重驗證SAX事件, 您需要設置ValidatorHandler 為ContentHandler 。
  
  使用ValidatorHandler, 您也能利用模式驗證一個JDOM 文件。 實際上, 任一個可在一個SAX流頂部建立或可產生SAX事件的對象模型(譬如XOM 和DOM4J)能由SVF利用一個模式來驗證XML 文件。 這是可能的,因為ValidationHandler 能驗證一個SAX流。 以下代碼片斷說明了一個JDOM文件是如何利用一個模式來驗證的,假設你已經獲取了前面例子中顯示的ValidatorHandler:
  
  SAXOutputter so = new SAXOutputter(vh);  so.output(jdomDocument);
  
  SAXOutputter 對象為JDOM 文件釋放SAX事件。 SAX 事件然后由ValidatorHandler驗證。
  
  您能使用SVF做的其它事是, 譬如在轉換以后驗證XML或獲得模式類型信息。使用SVF的更多信息請參考:Easy and Efficient XML Processing: Upgrade to JAXP 1.3
  
  運行例代碼
  
  范例程序包伴有本提示。 范例程序包中的代碼包括編碼實例和展示技術報道信息。在這個程序包里還有額外范例。 例如, 其中一個例子比較使用新的SVF模式驗證性能和設置二個模式屬性的前面的方法。 其它范例顯示利用模式怎么驗證Transformer的輸出。 安裝和運行范例:
  
  1.下載sample file并解壓縮其內容。你能在形如<install_dir>/ValidationFramework的目錄中看到解壓縮出來的目錄。例如,假如你解壓縮內容到一臺Windows機器上的C:/中,你最近創造的目錄就應該是C:/ValidationFramework 。解壓縮出來的內容包括一個README文件,此文件中包括了運行例子的介紹。你能使用在J2SE 5.0或者Java WSDP 1.6平臺上的JAXP 1.3來運行例程序。你也能下載在java.net 上的JAXP 項目頁面中的standalone JAXP 1.3 implementation 。
  
  2.運行ValidationFramework 目錄中的ant圖標。要編譯使用如下的命令:
  ant compile
  
  反饋信息中,你會看到如下的內容:
  Buildfile: build.xml
  
  init:
  
  [mkdir] Created dir: C:/ValidationFramework/build
  [mkdir] Created dir:
  C:/ValidationFramework/build/classes
  
  compile:
  
  [echo] C:/Program Files/Java/jdk1.5.0/jre
  ...
  
  BUILD SUCCESSFUL
  
  要運行例子,利用適當的目標來運行ant命令,例如:
  ant ValidateSAXStream
  
  在反饋的信息中,你會看到如下的信息輸出:
  [java] startElement: personnel
  [java] startElement: person
  [java] startElement: name
  [java] startElement: family
  [java] characters: Boss
  [java] endElement: family
  ...
  
  [java] startElement: email
  [java] characters: five@foo.com
  [java] endElement: email
  [java] startElement: link
  [java] endElement: link
  [java] endElement: person
  [java] endElement: personnel
  
  BUILD SUCCESSFUL
  
  假如你在J2SE 5.0中運行例子,不考慮JAXP jar的位置的'endorsed' 屬性。例如:
  ant -Dendorsed=/space/jaxp/jaxp-1_3/dist/ Validate

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情精品久久久久久黑人| 中文字幕亚洲一区二区三区五十路| 欧美黑人视频一区| 午夜精品久久久久久99热| 日韩中文在线不卡| 亚洲性线免费观看视频成熟| 久久精品电影一区二区| 欧美电影免费观看高清| 国产欧美一区二区三区久久| 精品久久久久久| 一级做a爰片久久毛片美女图片| 国产一区二区三区欧美| 亚洲人a成www在线影院| 欧美成人性生活| 亚洲性xxxx| 456亚洲影院| 国产欧美亚洲视频| 欧美精品videos性欧美| 日韩成人在线视频观看| 欧美一级高清免费播放| 97超级碰在线看视频免费在线看| 国产精品久久久精品| 日韩欧美在线字幕| 久久久噜噜噜久噜久久| 国产精品pans私拍| 亚洲精品福利免费在线观看| 欧美性xxxx| 欧美成人精品在线观看| 日韩中文字幕久久| 日韩电影免费在线观看| 久久九九精品99国产精品| 国产精品99免视看9| 97精品国产aⅴ7777| 久久久精品欧美| 亚洲日本aⅴ片在线观看香蕉| 51久久精品夜色国产麻豆| 亚洲欧美日韩一区二区在线| 久久不射电影网| 精品久久久久久久久久久久| 欧美人交a欧美精品| 久久久久久久久久久免费精品| www.国产精品一二区| 国产精品专区第二| 亚洲一区二区三区乱码aⅴ| 亚洲国产日韩欧美在线图片| 国产精品91久久久久久| 久久久久久久久久久网站| 国产一区二区三区免费视频| 亚洲大胆美女视频| 久久久国产精品视频| 欧美久久久精品| 成人淫片在线看| 精品久久久久久久久中文字幕| 亚洲男人天堂久| 欧美在线观看网址综合| 成人福利在线视频| 欧美日韩中文字幕日韩欧美| 亚洲欧美一区二区三区久久| 97在线看免费观看视频在线观看| 中文字幕欧美在线| 国产精品专区一| 国产精品久久久久9999| 国产亚洲aⅴaaaaaa毛片| 久久不射热爱视频精品| 欧美一区二区三区免费视| 奇门遁甲1982国语版免费观看高清| 川上优av一区二区线观看| 日韩精品免费一线在线观看| 国产精品白嫩初高中害羞小美女| 国产97人人超碰caoprom| 欧美大片欧美激情性色a∨久久| 成人精品网站在线观看| 亚洲区中文字幕| 国产亚洲欧美日韩一区二区| 国产精品极品美女粉嫩高清在线| 国内精品中文字幕| 狠狠色香婷婷久久亚洲精品| 色偷偷91综合久久噜噜| 亚洲一区中文字幕在线观看| 美日韩精品免费视频| 久久久天堂国产精品女人| 午夜精品国产精品大乳美女| 国产免费亚洲高清| 日韩欧美精品免费在线| 国产精品免费福利| 日本久久久久久久| 亚洲最大av网| 91亚洲精品久久久久久久久久久久| 国模吧一区二区| 日韩久久免费电影| 久久久久久久成人| 亚洲美女中文字幕| 国产精品日韩在线观看| 一区二区三区国产在线观看| 久久精品一区中文字幕| 亚洲女人天堂色在线7777| 欧美性视频网站| 久久免费高清视频| 精品福利免费观看| 伊人久久久久久久久久久久久| 在线观看久久久久久| 日韩欧美极品在线观看| 91理论片午午论夜理片久久| 91热精品视频| 亚洲欧美日韩一区二区三区在线| 亚洲免费精彩视频| 久热精品视频在线观看一区| 欧美巨大黑人极品精男| 久久天天躁日日躁| 国产成人精品电影久久久| 久久成人18免费网站| 亚洲在线www| 欧美高清在线视频观看不卡| 亚洲美腿欧美激情另类| 最近中文字幕2019免费| 国产精品成人品| 国产一区二区视频在线观看| 亚洲一区美女视频在线观看免费| 国产精品扒开腿做爽爽爽视频| 久久久亚洲影院你懂的| 亚洲午夜未删减在线观看| 欧美小视频在线观看| 亚洲欧美国产日韩天堂区| 奇米4444一区二区三区| 亚洲成人av资源网| 国产成人精品最新| 欧美一级视频免费在线观看| 这里只有精品丝袜| 日韩激情视频在线播放| 黄色成人av在线| 欧美一级视频在线观看| 97视频在线观看成人| 国产精品极品美女在线观看免费| 国产精品久久999| 亚洲性日韩精品一区二区| 日韩在线视频免费观看高清中文| 自拍亚洲一区欧美另类| 成人网中文字幕| 欧美—级高清免费播放| 国产精品h片在线播放| 日本高清视频一区| 国产一区在线播放| 日韩视频在线观看免费| 欧美激情一区二区三区久久久| 中文字幕在线观看亚洲| 成人中心免费视频| www亚洲精品| 欧美极品少妇全裸体| 亚洲国产毛片完整版| 国产精品亚洲网站| 日韩风俗一区 二区| 国产91九色视频| 久久成人一区二区| 日韩视频免费大全中文字幕| 国产精品九九九| 亚洲欧洲av一区二区| 欧美色视频日本高清在线观看| 精品国产视频在线| 91精品国产综合久久香蕉922| 亚洲午夜未满十八勿入免费观看全集| 中文字幕亚洲欧美日韩2019| 91久久精品美女| 国产精选久久久久久| 国产成人一区二区在线|