第10章xmldom物件模型内容摘要:

件  例如:在新建立的 XML DOM 新增元素,如下所示 : (請注意:只是新增節點,該節點與 document 之間暫時還沒有關係) Element root = (Element) (book)。 •程式碼使用 createElement() 方法建立 Element 元素物件 book,這就是新文件的根元素。 新增 XML元素和屬性 步驟二 第二步:插入指定的位置  在建立好 XML 元素的相關物件後,我們可以使用 Node 節點物件的相關方法將節點新增到樹狀結構的 XML DOM 中,相關方法的說明如下所示: • appendChild(newnode) : 新增 newnode 節點為其最後一個子節點。 • insertBefore(newnode, befnode) : 將 newnode節點插在 befnode 節點前。  例如:將 root 節點新增成為 XML DOM 的根節點,如下所示: (root)。 新增 XML元素和屬性 步驟三 第三步:新增元素的內容  在元素新增內容,就是新增文字值的子節點,如下所示: Element node = (Element) (code)。 Text t = (Text) (P761)。 (t)。 (node)。 新增 XML元素和屬性 步驟四 第四步:新增元素的屬性  在 XML 節點如果擁有屬性, Element 元素物件可以使用 setAttribute() 方法建立屬性,如下所示: (instock, Y)。 •程式碼新增名為 instock的屬性,第 1個參數是屬性名稱,第 2個參數是屬性值。 刪除 XML元素和屬性  如果需要刪除節點或屬性,我們可以使用 Node 節點的removeChild() 方法從樹狀結構刪除指定的節點,如下所示: // 取得 node 的一個子節點 onechild (onechild)。  如果想刪除屬性,則是使用 Element 元素物件的removeAttribute() 方法來刪除屬性,如下所示: // 取得一個 Element 節點 del (instock)。 變更 XML 元素或者屬性內容  如果需要變更節點或屬性內容,我們使用 setTextContent() 方法,範例如下:  修改元素內容,把 code 的 P761 改成 XXX,如下所示: Element element = ().getFirstChild()。 (XXX)。  修改屬性 instock 內容: Element element = ().getFirstChild()。 Attr attr = (instock)。 (n)。 變更 XML 元素或者屬性名稱  如果需要變更節點或屬性名稱,我們可以使用 Document 節點的 renameNode() 方法,語法如下: // 改變 node 的名稱為 newName (node, [new namespace], [newName])。  如果保留原來的 namespace,把原來的名稱從 library 改成 books,如下所示: // 假設取得一個 Element 節點 element Element element = ()。 (element, (), “books”)。 Ch10_4_4 import .*。 import .*。 import .*。 import .*。 public class Ch10_4_4 { static Document document。 public static void main(String[] args) throws Exception { DocumentBuilderFactory dbf = ()。 DocumentBuilder db = ()。 // 建立新 XML文件 document = ()。 // 建立根元素 Element root = (book)。 (root)。 // 新增子元素 code Element node = (code)。 (node)。 ((P761))。 // 新增子元素 title node = (title)。 (node)。 ((PHP 5網頁設計範例教本 ))。 Ch10_4_4 // 新增 author元素 Element newNode = (author)。 (newNode, ())。 Node newText = (陳會安 )。 ().appendChild(newText)。 // 新增屬性 node=(Element)().getNextSibling()。 (instock,Y)。 (建立的 XML文件 : )。 printXML(root)。 // 刪除 author元素 ((Element) (author).item(0))。 // 刪除 code屬性 instock Element del = (Element) ()。 (instock)。 (刪除後的 XML文件 : )。 printXML(root)。 } Ch10_4_4 // 顯示 XML文件 private static void printXML(Node root) { (根元素 : +())。 NodeList nodes = ()。 // 取得所有的子節點 for ( int i=0。 i ()。 i++ ) { // 元素和文字節點 (元素 : + (i).getNodeName())。 (/+(i).getFirstChild().getNodeValue())。 // 顯示指定元素的屬性值 if ((i).hasAttributes()) { NamedNodeMap atts = (i).getAttributes()。 for (int j = 0。 j ()。 j++) { Node att = (j)。 ( + +())。 (/+())。 } } } } } Ch10_4_4 // 輸出 XML 文件 private static void printXML(Node root) { PrintWriter out = new PrintWriter(new FileWriter())。 (根元素 : +())。 NodeList nodes = ()。 for ( int i=0。 i ()。 i++ ) { (元素 : + (i).getNodeName())。 (/+(i).getFirstChild().getNodeValue())。 // 顯示指定元素的屬性值 if ((i).hasAttributes()) { NamedNodeMap atts = (i).getAttributes()。 for (int j = 0。 j ()。 j++) { Node att = (j)。 ( + +())。 (/+())。 } } } ()。 } } 練習題  請修改 Ch10_4_1 並使其能夠產生 的 XML 文件。 DTD 驗證  JAXP API 版只支援 DTD 驗證,並不支援 XML Schema( )。 當 XML 文件指定 DTD 檔案,在 XML 剖析器載入 XML 文件時,就可以進行 XML文件的驗證。 •JDK supports JAXP API •JDK supports JAXP API •JDK supports JAXP API TestXSD // 驗證 XML Schema import .*。 import .*。 import .*。 import .*。 public class TestXSD { public static void main(String[] args) { if( != 1) { (Usage: java TestXSD )。 (1)。 } String xmlFile = args[0]。 try { TestXSD xmlTester = new TestXSD(xmlFile)。 } catch (Exception e) { ( ().getName() +: + () )。 } } TestXSD public TestXSD(String xmlFile) throws ParserConfigurationException, SAXException, IOException { DocumentBuilderFactory factory = ()。 (Parser名稱 : + ().getName())。 // 預設為 false,必須是 true,因為 xsd:schema (true)。 (true)。 // 明確告知 JAXP 所使用的 Schema 語言 ( // Specify our own schema this overrides the schemaLocation in the xml file //( file:./)。 DocumentBuilder builder = ()。 (new SimpleErrorHandler() )。 // parse 錯誤會引起 SAXException Document document = (xmlFile)。 Node rootNode = ()。 (Root node: + ())。 } } SimpleErrorHandler import。 import。 public class SimpleErrorHandler implements ErrorHandler { public void error(SAXParseException exception) { (error: + ())。 } public void fatalError(SAXParseException exception) { (fatalError: + ())。 } public void warning(SAXParseE。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。