日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

XML——解析XML文档

發(fā)布時間:2023/12/3 asp.net 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XML——解析XML文档 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【0】README

0.1)本文描述 轉(zhuǎn)自 core java volume 2, 旨在理解 XML——解析XML文檔 的基礎知識;
0.2) for source code, please visit https://github.com/pacosonTang/core-java-volume/blob/master/coreJavaAdvanced/chapter2/ParseXMLTest.java


【1】解析XML文檔相關

0)解析器

  • 0.1)樹型解析器:(樹結構)
  • 0.2)流機制解析器:讀入XML文檔時生成相應的事件;

1)解析器定義: 解析器是這樣一個程序, 它讀入一個文件,確認這個文件具有正確的格式,然后將其分解成各種元素,使得程序員能夠訪問這些元素; (干貨——解析器定義)
2)java 庫提供了兩種XML解析器: (干貨——兩種XML解析器定義)

  • 2.1)樹型解析器:像文檔對象模型(Document Object Model, DOM)解析器這樣的樹型解析器,它們將讀入的XML文檔轉(zhuǎn)換為 樹結構;
  • 2.2)流機制解析器:像XML簡單API(Simple API for XML, SAX)解析器這樣的流機制解析器, 它們在讀入XML文檔時生成相應的事件;

3)java XML 處理API(java API for XML Processing, JAXP)庫:使得實際上可以以插件形式使用這些解析器中的任意一個, 但JDK 包含了自己的DOM解析器;

  • 3.1)解析步驟(steps):
  • s1)創(chuàng)建一個 DocumentBuilder 對象,可以從DocumentBuilderFactory中得到這個對象,如:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder();
  • s2)可以從文件中讀入某個文檔:
File f = ...; Document doc = builder.parse(f);
  • s2.1)或者用一個URL:
URL u = ...; Document doc = builder.parse(u);
  • s2.2)甚至可以指定一個任意輸入 流:
InputStream is = ...; Document doc = builder.parse(is);
  • Attention) 如果使用輸入流作為輸入源,那么對于那些以該文檔的位置為相對路徑而被引用的文檔,解析器將無法定位;但是可以安裝一個“實體解析器”來解決這個問題;
  • 3.2)Document對象: 是XML 文檔的樹型結構在內(nèi)存中的表現(xiàn),它由實現(xiàn)了Node 接口及其各種子接口的類的對象構成;Node 接口及其子接口的層次結構如下: (干貨——Document對象)

  • 3.2.1)可以通過調(diào)用 getDocumentElement 方法來啟動對文檔內(nèi)容的分析,它將返回根元素:

Element root = doc.getDocumentElement();
  • 3.2.2)如果要得到該元素的子元素,使用 getChildNodes 方法,這個方法返回一個類型為 NodeList 的 集合;
  • 3.2.3)item 方法:將得到指定索引值的項;
  • 3.2.4)getLength方法: 則提供了項的總數(shù);
  • 3.2.5) 看個荔枝:像這樣枚舉所有子元素:
NodeList children = root.getChildNodes(); for (i < children.getLength())Node child = children.item(i);
  • 3.2.6)如果只希望獲得子元素,可以忽略空白字符:
for (i < children.getLength()) {Node child = children.item(i);if(child instanceof Element) }
  • 現(xiàn)在,只會看到兩個元素: 標簽名是 name 和 size;

  • 3.3) 方法集合:

    • 3.3.1) getLashChild, getNextSibling 方法;
    • 3.3.2)枚舉節(jié)點屬性, getAtributes;
    • 3.3.3)調(diào)用getNodeName 和getNodeValue 方法可以得到 屬性名和屬性值(getAttribute 方法);
    • 3.3.4)知道屬性名, 可以直接獲取屬性值:
String unit = element.getAttribtte("unit");

4)解析來自給定文件, URL 或輸入流的 XML 文檔,返回解析后的文檔的三種方法(Methods); (干貨——三種解析來自給定文件的方法,分別是文件對象,String對象 和 輸入流對象)

  • M1) Document parse(File f) ;
  • M2) Document parse(String url) ;
  • M3) Document parse(InputStrema in) ;

總結

以上是生活随笔為你收集整理的XML——解析XML文档的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。