麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

xml中的schema約束的以及用jaxp通過sax方式解析xml文檔和dom4j解析xml文檔 ——Web部分第八天

2019-11-14 12:58:08
字體:
來源:轉載
供稿:網(wǎng)友

xml中的schema約束的以及用jaxp通過sax方式解析xml文檔和dom4j解析xml文檔 ——Web部分第八天

1. schema約束

* Scheme約束是分與合xml語法的約束文件,擴展名為.xsd* Scheme約束語義嚴格,支持多種數(shù)據(jù)類型的定義。* 但比較dtd更加復雜。

2. 用jaxp通過sax方式解析xml文檔

* sax方式:事件驅動,邊讀取邊解析* 使用的類在javax.xml.parsers下* sax解析只能完成查詢的操作。* 缺陷:方法是逐行解析,并且連同換行空格的都會解析。注:換行的會被當作文本。//關鍵代碼 ;public class XmlBySax{ public static void main(String[] args) throws Exception { SAXParserFactory saxParserFactory = SAXParserFactory.newInstance() ; SAXParser saxParser = saxParserFactory.newSAXParser() ; saxParser.parse(new File("src/person.xml") , new MyDefaultHandler()); }}//通過創(chuàng)建自己的sax解析類繼承DefaultHandler重寫其中的三個方法,來實現(xiàn)具體的查詢操作。//該類為事件處理器。class MyDefaultHandler extends DefaultHandler { //標簽開始時自動執(zhí)行的方法 @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.out.

小知識

* 導包操作 - ecplise下在目錄下建立lib文件夾 - 將jar包放到lib下 - 右鍵jar,build path -- add to buildpath 。* 設置java虛擬機的運行大小

自定義工具包

package com.xml.util;import java.io.FileOutputStream;import java.io.IOException;import org.dom4j.Document;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;public class DocumentUtil { public static final String PATH= "src/person.xml" ; public static Document getDocument() { Document document = null ; try { SAXReader saxReader = new SAXReader() ; document = saxReader.read(PATH) ; } catch (Exception e) { e.printStackTrace() ; } return document ; } public static void writerXML(Document document) { XMLWriter xmlWriter = null ; try { xmlWriter = new XMLWriter(new FileOutputStream(PATH) , OutputFormat.createPrettyPrint()) ; xmlWriter.write(document) ; } catch (Exception e) { e.printStackTrace() ; }finally { try { xmlWriter.close() ; } catch (IOException e) { e.printStackTrace(); } } }}

3. dom4j解析xml文檔

* dom4j是開源jar包。* dom4j 中 document, element , node , 都是接口。* 回寫的類XMLWriter。* dom4j節(jié)點的管理實現(xiàn)的是List接口,所以可以按照List接口的方法遍歷等操作* 創(chuàng)建新節(jié)點的類為DocumentHelper.createElement("") ; 直接創(chuàng)建新節(jié)點的方法 父節(jié)點.addElement("") ;* OutputFormat為格式化輸出,可以設置輸出的格式,字符集等等。//代碼沒有導包。public class XmlByDom4j { public static void main(String[] args) throws Exception { //selectName(); //selectOneName() ; //addElement() ; //writerElement(1); //modifyDocument("90") ; //removeElement() ; getValues() ; } /* * 獲取xml標簽的屬性值 */ private static void getValues(){ Document document = DocumentUtil.getDocument() ; Element p1 = document.getRootElement().element("p1") ; String name = p1.attributeValue("id") ; System.out.println(name) ; } /* * 實現(xiàn)xml中的刪除操作 */ private static void removeElement(){ Document document = DocumentUtil.getDocument() ; Element root = document.getRootElement() ; Element p1 = root.element("p1") ; Element school = p1.element("school") ; p1.remove(school) ; DocumentUtil.writerXML(document) ; } /* * 實現(xiàn)xml中的修改操作 */ private static void modifyDocument(String text){ Document document = DocumentUtil.getDocument() ; Element root = document.getRootElement() ; Element p1 = root.element("p1") ; Element age = p1.element("age") ; age.setText(text) ; DocumentUtil.writerXML(document) ; } /* * 指定位置添加 */ private static void writerElement(int index) throws Exception { Element root = new SAXReader().read("src/person.xml").getRootElement() ; Element p1 = root.element("p1") ; List<Element> list = p1.elements() ; Element school = DocumentHelper.createElement("school") ; school.setText("edu.nongda.www") ; list.add(index, school) ; XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/person.xml") , OutputFormat.createPrettyPrint()) ; xmlWriter.write(root) ; xmlWriter.close() ; } /* *實現(xiàn)xml中添加操作,直接在末尾節(jié)點添加 */ private static void addElement() throws Exception { Element root = new SAXReader().read("src/person.xml").getRootElement() ; Element p1 = root.element("p1") ; Element sex = p1.addElement("sex") ; sex.addText("nan") ; /*OutputFormat format = OutputFormat.createPrettyPrint() ; //這里可以指定輸出的字符集格式字符集 format.setEncoding("utf-8 ") ;*/ XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/person.xml") , OutputFormat.createPrettyPrint()) ; xmlWriter.write(root) ; xmlWriter.close() ; } /* * 得到xml中第一個name的值 */ private static void selectOneName() throws Exception { SAXReader saxReader = new SAXReader() ; Document document = saxReader.read("src/person.xml") ; Element root = document.getRootElement() ; /*List<Element> p1 = root.elements("p1") ; Element p1One = p1.get(0) ; Element name = p1One.element("name") ; System.out.println(name.getText());*/ Element p1 = root.element("p1") ; Element name = p1.element("name") ; System.out.println(name.getName() + ":" + name.getText()) ; } /* * 遍歷xml中文件下的內容。 */ private static void selectName() throws DocumentException { // 1.得到dom4j解析器 SAXReader saxReader = new SAXReader() ; Document document = saxReader.read("src/person.xml") ; //得到根節(jié)點 Element root = document.getRootElement() ; //得到子節(jié)點下的集合 List<Element> p1 = root.elements("p1") ; //遍歷集合元素 for(Element element : p1){ //打印輸出 Element name = element.element("name") ; System.out.println(name.getText()) ; } }}

4. XPATH的操作

* xpath是dom4j支持的擴展jar包,需要導入jar包。* xpath有很多種形式可以直接提取相應的標簽,可以通過API查詢* 得到的是Node節(jié)點對接點進行操作。* dom4j中有兩個方法支持操作selectNodes("xpath格式") ;獲取多個節(jié)點,selectSingleNode("xpath格式"); 獲取單個節(jié)點。public class XmlByXpath { public static void main(String[] args) { //forEachElement(); selectId() ; } /* * 使用xpath得到標簽 ; */ private static void forEachElement() { Document document = DocumentUtil.getDocument() ; List<Node> list = document.selectNodes("http://name") ; for(Node tmp : list){ System.out.println(tmp.getText()) ; } } private static void selectId() { Document document = DocumentUtil.getDocument() ; Node name = document.selectSingleNode("http://p1[@id='id1']/name") ; System.out.println(name.getText()) ; }}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 免费看综艺策驰影院 | 九九热九九热 | 免费国产一级淫片 | 中文字幕 亚洲一区 | 成人午夜免费国产 | 久久国产精品电影 | 欧美精品久久久久久久久久 | 黄色片网站免费 | 91精品国产777在线观看 | 黄色av一区二区三区 | 久久sp | 成人午夜在线免费视频 | 福利在线小视频 | 伊人网站| 手机免费看一级片 | 美国av免费看 | 性欧美xxxx极品摘花 | 中国免费一级毛片 | 全网免费毛片 | 久久免费视频1 | 性少妇freeseⅹbbwhd| 久久99网 | 欧美一级黄色免费 | 精精国产xxxx视频在线野外 | 成年人免费视频播放 | 日本xxxx色视频在线观看免费, | 国产午夜精品久久久久久久蜜臀 | 黄网站在线免费 | 99热1| 毛片免费视频播放 | 黄色大片大毛片 | 天天夜碰日日摸日日澡性色av | japanesexxxx24videofree| 欧美黑大粗硬毛片视频 | 日本在线视频免费观看 | 久久精品99北条麻妃 | 成人福利在线免费观看 | 青青青在线免费 | 久久99精品久久久久久小说 | 国产成人高清成人av片在线看 | 亚洲婷婷日日综合婷婷噜噜噜 |