單元3-1: DOM簡介(Part-I) 王豐緒 銘傳大學資工系.

Slides:



Advertisements
Similar presentations
1 Java 语言程序设计 计算机系 鲍金玲. 2 引子 甲骨文 甲骨文是全球最大的信息管理软件及服务供应商,成立于 1977 年,公司总部 设在美国加利福尼亚州的红木城( Redwood Shores ),全球员工达 名, 包括 名开发人员、 7500 多名技术支持人员和.
Advertisements

中 五 級中 五 級 戰後國共關係 與 中華人民共和國成立 中國歷史科 1 )認識國共政治協商的概況 2 )認識國共內戰的概略經過及結果 3 )中華人民共和國成立.
不吃早餐的影響: 體內的葡萄糖無法 足夠供應給大腦與 肌肉,會感覺疲勞, 注意力無法集中。。 營養的早餐:乳品 + 全榖類食品 + 蛋白質 + 水果 早餐你吃了嗎?
第一單元 建立java 程式.
人文地理專題研究 王志明.
导言 第四 单元 凡尔赛—华盛顿体系与第二次世界大战
DATE: 14/10/2009 陳威宇 格網技術組 雲端運算相關應用 (Based on Hadoop)
会计实验.
新建本科院校 应用型人才培养若干问题探析 张德江.
土地出让转让的政策与实务 岳晓武 国土资源部利用司.
08 CSS 基本語法 8-1 CSS 的演進 8-2 CSS 樣式規則與選擇器 8-3 連結HTML 文件與CSS 樣式表
题目回顾 泉水在地下蓄积,一旦有机会,它便骄傲地涌出地面,成为众人瞩目的喷泉,继而汇成溪流,奔向远方。但人们对地下的泉水鲜有关注,其实,正是因为有地下那些默默不语的泉水的不断聚集,才有地上那一股股清泉的不停喷涌。 请根据你对材料的理解和感悟,自选一个角度,写一篇不少于800字的文章,文体自定,标题自拟。要求:立意明确,不要套作,不得抄袭。
數位芝麻網路公司( 軟體工程師
Part 2 開發Android應用程式的流程
公文/檔案管理作業流程 簡 報 總務處 文書組 報告人:田至琴 9 7 年3 月7 日 1 1.
农机化项目管理培训会 柳州市农机局 郑崇宁
第三章 使用XMLHttpRequest对象
出口农产品风险管理 企业分类及监督管理表格
第二章 JAVA语言基础.
● 四 (2)班 家 长 网络交 流 会 ● 快乐成长 与您 共享 家庭 学校 社会.
建立Android新專案 建國科技大學 資管系 饒瑞佶 2010/10.
mashup 林維甫 郭家伶 吳佩珊 蔡小倩 楊士毅 曾仕豪 Marshup起源 何謂Mashup Mashup類型 Mashup架構
題目:十六對一多工器 姓名:李國豪 學號:B
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
DreamWeaver MX (II) 林偉川.
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
Java簡介.
第15章 使用定制组件 使用定制组件是在Flex提供的组件基础上创建自定义的组件模块。虽然Flex内置了大量的组件以满足不同应用的需求,但是这些组件只是用户界面中较为常见的元素。在大型的或者复杂的应用中,往往需要将这些基本元素组合,组成新的模块单元使用。对于这种情况,Flex提供了自定义组件的功能。本章主要介绍如何使用Flex编程语言创建自定义组件。
王豐緒 銘傳大學資訊工程學系 問題:JAVA 二元檔輸出入.
软件建模训练(6-2) 设计模式 张静 南京理工大学计算机科学与工程学院.
JUNO数据模型设计和相关软件开发 李腾 黄性涛 山东大学 合肥 2018/12/2.
類別(class) 類別class與物件object.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
王豐緒 銘傳大學資訊工程學系 問題:JAVA 物件檔輸出入.
安裝JDK 安裝Eclipse Eclipse 中文化
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
DWR WEB开发交流 1、自我介绍 2、DWR概述 3、DWR DEMO介绍 4、DWR实现机制 5、DWR配置说明 6、JS开发注意事项.
Merge Partners’ programs by Matlab
第7章 Web伺服器檔案與XML文件的處理 7-1 System.IO名稱空間的基礎 7-2 伺服器的資料夾與檔案操作
OSGi (Open Service Gateway Initiative)
樹狀結構 Tree Structure chapter 7 德明科技大學資訊科技系.
XML基礎課程 5 數位芝麻網路公司 XML講師:蔡斐婷.
Chap3 Linked List 鏈結串列.
Topic Introduction—RMI
第一單元 建立java 程式.
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
Ch20. 計算器 (Mac 版本).
第 19 章 XML記憶體執行模式.
张孝祥IT课堂 -深入体验Java Web开发内幕
第 15 章 SAX程式設計.
Unit 05 雲端分散式Hadoop實驗 -I M. S. Jian
SOA模型设计 杨子 2009/09/30.
利用JAVA DOM 進行DTD驗證XML文件
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
DRC with Calibre 課程名稱:VLSI 報告人:黃家洋 日期: 改版(蔡秉均) 1.
利用 EditorConfig 自訂文字編輯器設定
陣列與結構.
Dreamweaver 進階網頁製作 B 許天彰.
動畫演示 Node規範了一些基本的方法,像是增加節點、刪除節點、讓節點做一些事、取得第n個節點等等
第15章 SAX2建立XML應用程式 15-1 SAX2的基礎 15-2 使用VB建立SAX應用程式 15-3 應用實例:顯示XML文件
Brief Guide of FrontPage
MultiThread Introduction
單元1-3: XML基本語法與結構 王豐緒 銘傳大學資訊工程學系.
第2章 Java语言基础.
面向对象程序设计 C++教程 西安工业大学 于帆.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
SQLite資料庫 靜宜大學資管系 楊子青.
西南科技大学网络教育系列课程 动态网页设计(JSP) 补充 JSP操作XML文件.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Presentation transcript:

單元3-1: DOM簡介(Part-I) 王豐緒 銘傳大學資工系

單元目標 了解XML DOM 了解DOM API的種類 熟悉JAVA DOM API的運用 產生空白的XML文件 新增XML文件節點

XML文件結構樹 (XML DOM) 文件實體 (document entity) 前言 只能有一個! 文件元素 (document element) 元素子樹 (element subtree) 結語

文件元素樹 文件元素 (document element) 子元素 屬性 (element) (attributes) 子元素 (sub- 文字字元 (characters) 處理指令 (PI) CDATA字元 (CDATA) 註解 (comments)

何謂DOM DOM的全名是「Document Object Model」 定義一個應用程式介面(API:Application Program Interface)讓程式設計師可以管理、存取文件裡的內容 應用程式可以透過這些API間接做到它想做的事

XML DOM API 的應用 XML 文件 XML DOM parser (文字檔) DOM Tree (存在記憶體) XML application

常見的DOM-based Parsers JAXP XML4J Xerces Msxml 4DOM XML::DOM Sun Microsystem’s JAVA API for XML Parsing (JAXP) (java.sun.com/xml) XML4J IBM’s XML Parser for Java (XML4J) (www.alphaworks.ibm.com/tech/xml4j) Xerces Apache’s Xerces Java Parser (xml.apache.org/xerces) Msxml Microsoft’s XML Parser (msxml) 4DOM XML parser for the Python programming language XML::DOM XML parser for the Perl programming language

ProcessingInstruction 常見Java XML DOM 類別 Node A node in an XML document Document XML document’s top-level node NodeList A read-only list of Node objects Element An element node Attr An attribute node CharacterData Represent character data Text A text node Comment A comment node ProcessingInstruction A PI node CDATASection A CDATA node Node Document Element Attr CharacterData Text CDATASection Comment ProcessingInstruction

DOM 節點的階層性 Document Entity Node NodeList

動作1:產生XML文件 從無到有產生XML文件意味著產生XML文件的根元素 <?xml version = "1/0" encoding="UTF-8" ?> <行事曆 /> / Document Entity Node 行事曆 Document Element Node

如何產生新的XML文件 // 如何產生Document 物件? //利用 DocumentBuilder 物件 // 方法一: DocumentBuilderFactory DocumentBuilderDocument // 方法二: DocumentBuilderFactoryDocumentBuilderDOMImplementationDocument //共同的部分:建立 DocumentBuilder物件 DocumentBuilderFactory factory  = DocumentBuilderFactory.newInstance(); //factory.setNamespaceAware(true); //設定處理Namespace // factory.setValidating(true); // //設定剖析XML文件時,進行驗證 //取得DocumentBuilder物件 DocumentBuilder builder = factory.newDocumentBuilder();   // 方法一: 利用DocumentBuilder物件的newDocument()方法 Document doc = builder.newDocument(); //doc就是XML文件實體節點 Element root = doc.createElement ("行事曆"); //root就是XML文件根元素 doc.appendChild (root) ; //需要自行將根元素插入到文件實體節點的下面  // 方法二:利用DOMImplementation物件的createDocument()方法 DOMImplementation impl = builder.getDOMImplementation(); Document doc = impl.createDocument( "",  "行事曆", null); //會自行將根元素插入到文件實體節點的下面

查一下?動一下? 查一下下列物件所在的package 上一頁的投影片在執行上要注意try-catch的錯誤處理 DocumentBuilderFactory DocumentBuilder DOMImplementation Document Element 查到的套件需要用import匯入java程式 上一頁的投影片在執行上要注意try-catch的錯誤處理 請寫一個Java程式,看看要catch哪些錯誤?

動動手 查一下下列物件所在的package JAVA範例 DocumentBuilderFactory DocumentBuilder javax.xml.parsers.DocumentBuilderFactory DocumentBuilder javax.xml.parsers.DocumentBuilder DOMImplementation org.w3c.dom.DOMImplementation Document org.w3c.dom.Document Element org.w3c.dom.Element JAVA範例

相關XML DOM類別 DocumentBuilderFactory類別 DocumentBuilder類別 Document類別 在產生DocumentBuilder之前,可以先設定DocumentBuilder的屬性 setNamespaceAware(true|false) setValidation(true|false) DocumentBuilder類別 可以用來產生Document物件 透過newDocument() 透過產生DomImplementation,再叫用其createDocument()方法 Document類別 可以用來產生XML文件的節點(元素, 屬性等): 例如createElement() 可以用來插入根元素到文件實體之下: appendChild()方法

動作2:產生具有命名空間的XML文件 從無到有產生XML文件意味著產生XML文件具有命名空間的根元素 <?xml version = "1/0" encoding="UTF-8" ?> <mcu:行事曆 xmlns:mcu="http://www.mcu.edu.tw"/> xmlns:mcu ="http://www.mcu.edu.tw" / Document Entity Node mcu:行事曆 Document Element Node

如何產生新的具備命名空間的XML文件 // 如何產生Document 物件? //利用 DocumentBuilder 物件 // 方法一: DocumentBuilderFactory DocumentBuilderDocument // 方法二: DocumentBuilderFactoryDocumentBuilderDOMImplementationDocument //共同的部分:建立 DocumentBuilder物件 DocumentBuilderFactory factory  = DocumentBuilderFactory.newInstance(); //factory.setNamespaceAware(true); //設定處理Namespace // factory.setValidating(true); // //設定剖析XML文件時,進行驗證 //取得DocumentBuilder物件 DocumentBuilder builder = factory.newDocumentBuilder();   // 方法一: 利用DocumentBuilder物件的newDocument()方法 Document doc = builder.newDocument(); //doc就是XML文件實體節點 Element root = doc.createElementNS("http://www.mcu.edu.tw","mcu:行事曆"); //root就是XML文件根元素 doc.appendChild (root) ; //需要自行將根元素插入到文件實體節點的下面  // 方法二:利用DOMImplementation物件的createDocument()方法 DOMImplementation impl = builder.getDOMImplementation(); Document doc = impl.createDocument( "http://www.mcu.edu.tw", "mcu:行事曆", null); //會自行將根元素插入到文件實體節點的下面

動作2:程式範例 JAVA範例

相關XML DOM類別 DomImplementation類別 Document類別 可以用來產生Document物件 透過createDocument(“URI”, qualified_name, null)方法 Document類別 可以用來產生XML文件的節點(元素, 屬性等) 透過createElementNS(“URI”, qualified_name)

動作3:如何取得XML根元素 //利用 Document 物件 Document doc = …. Element rootElement = doc.getDocumentElement(); doc rootEleemnt / Document Entity Node 行事曆 Document Element Node

動作4:設定XML元素節點的屬性 //利用 Element物件 Document doc = …. Element root = doc.getDocumentElement(); //設定date屬性值為 "2009/03/24" root.setAttribute("date", " 2009/03/24 "); doc root / Document Entity Node date= "2009/03/24" 行事曆 Document Element Node

動作5:設定XML元素節點的屬性(具有命名空間) //利用 Element物件 Document doc = …. Element root = doc.getDocumentElement(); //設定date屬性值為 "2009/03/24" root.setAttributeNS("http://www.mcu.edu.tw", "mcu:date", " 2009/03/24 "); doc root / Document Entity Node mcu:date= "2009/03/24" 行事曆 Document Element Node

動作6:新增XML文件節點 插入一個XML文件的元素節點(有時包含屬性節點) <?xml version = "1/0" encoding="UTF-8" ?> <行事曆> <年 年份="2009" /> </行事曆>

如何新增XML文件內容節點 //利用 Element物件 Document doc = …. //假設用前面的範例已經產生XML document物件 Element root = doc.getDocumentElement(); //產生新的元素節點 Element elem= doc.createElement("年"); elem.setAttribute("年份", "2009"); //設定屬性 //利用appendChild()將新節點插入適當的位置 root.appendChild(elem); / doc 行事曆 root 年份="2009" 年 Attribute Node elem

動作6:程式範例 程式範例

動作7:如何新增各式XML內容節點 //利用 Element物件 Document doc = …. Element root = doc.getDocumentElement(); //產生各式的節點 Element elem= doc.createElement(“年"); elem.setAttribute("年份", "2009"); //設定屬性 Comment comment = doc.createComment(“註解內容"); Text txt= doc.createTextNode(“文字內容"); ProcessingInstruction pi = doc.createProcessingInstruction(“target”, “data”); CDATASection cdata = doc.createCDATASection(“cdata”); //利用appendChild()將新節點插入適當的位置 root.appendChild(elem); root.appendChild(comment); root.appendChild(txt); root.appendChild(pi); root.appendChild(cdata);

動作7:程式範例 程式範例

動作8:如何儲存XML檔案 //利用 Transformer物件 // TransformerFactory  Transformer TransformerFactory tranFactory = TransformerFactory.newInstance();  Transformer aTransformer = tranFactory.newTransformer(); //準備進行存檔成為檔名 filename Document doc = …. Source src = new DOMSource(doc); Result dest = new StreamResult(new FileOutputStream(filename)); //呼叫transform分法, 進行存檔  aTransformer.transform(src, dest);

查一下?動一下? 查一下下列物件所在的package 上一頁的投影片在執行上要注意try-catch的錯誤處理 TransformerFactory Transformer Source, DOMSource Result, StreamResult, FileOutputStream 查到的套件需要用import匯入java程式 上一頁的投影片在執行上要注意try-catch的錯誤處理 請寫一個Java程式,看看要catch哪些錯誤?

動作8:程式範例 查一下下列物件所在的package JAVA範例 Transformer Source DOMSource TransformerFactory javax.xml.transform Transformer Source DOMSource javax.xml.transform.dom Result StreamResult javax.xml.transform.stream , FileOutputStream Java.io JAVA範例

動作9:如何載入XML檔案 //利用 DocumentBuilder物件 的parse方法 //產生DocumentBuilder物件 DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance(); dfactory.setNamespaceAware(true); //啟動namespace處理機制 dfactory.setValidating(true); //啟動validating處理機制 DocumentBuilder blder = dfactory.newDocumentBuilder() ; //載入XML文件 Document doc = blder.parse(new File (filename) );    

動作9:程式範例 程式範例

單元複習 XML DOM DOM API的種類 各種基本的JAVA DOM API的運用 產生空白的XML文件 新增XML文件節點 命名空間的處理 儲存與載入XML文件

練習1:XML文件的新增與儲存 寫一JAVA程式,產生下列的XML文件,並存成test.xml <!-- this document is my first XML document --> <myDoc> <event date =“2009/03/24”> Today I learn to create an XML document! </event> </myDoc>c 注意: 使用Node介面的insertBefore()可以控制新節點擺放的位置

練習2:XML文件的載入 寫一JAVA程式,將上頁產生的XML文件載入,修改成下列的樣子後存成test2.xml <!-- this document is my first XML document --> <myDoc> <event date =“2009/03/24”> Today I learn to create XML document! Now, I learn to load an XML document! </event> </myDoc>