色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

XML格式文件詳解

汽車電子技術 ? 來源:Java爛筆頭 ? 作者:小週 ? 2023-02-28 14:33 ? 次閱讀

XML格式文件詳解

1

概述

XML,即可擴展標記語言,XML是互聯網數據傳輸的重要工具,它可以跨越互聯網任何的平臺,不受編程語言和操作系統的限制,可以說它是一個擁有互聯網最高級別通行證的數據攜帶者。XML是當前處理結構化文檔信息中相當給力的技術,XML有助于在服務器之間穿梭結構化數據,使得開發人員更加得心應手的控制數據的存儲和傳輸。XML用于標記電子文件使其具有結構性的標記語言,可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。XML是標準通用標記語言的子集,非常適合Web傳輸。XML提供統一的方法來描述和交換獨立于應用程序或供應商的結構化數據。

一個XML格式文件必須要有第一行的聲明和它的文檔元素的描述信息。

2

XML的特點

XML與操作系統、編程語言的開發平臺都無關;

實現不同系統之間的數據交互。

3

XML的作用

配置應用程序和網站;在配置文件里邊所有的配置文件都是以XML的格式來編寫的。

數據交互;跨平臺進行數據交互,它可以跨操作系統,也可以跨編程語言的平臺。

4

XML聲明

XML聲明一般是XML文檔的第一行;

version屬性 :用于說明當前XML文檔的版本,因為都是在用1.0,所以這個屬性值大家都寫1.0,version屬性是必須的;

encoding屬性 :用于說明當前XML文檔使用的字符編碼集,XML解析器會使用這個編碼來解析XML文檔。encoding屬性是可選的,默認為UTF-8。注意,如果當前XML文檔使用的字符編碼集是GB2312,而encoding屬性的值為UTF-8,那么一定會出錯的;

standalone屬性 :用于說明當前XML文檔是否為獨立文檔,如果該屬性值為yes,表示當前XML文檔是獨立的,如果為no表示當前XML文檔不是獨立的,即依賴外部的約束文件。默認是yes

沒有XML文檔聲明的XML文檔,不是格式良好的XML文檔;

XML文檔聲明必須從XML文檔的1行1列開始。

5

XML元素

XML元素的格式1

XML元素包含:開始標簽、元素體(內容)、結束標簽。

例如:大家好

空元素:空元素只有開始標簽,沒有元素體和結束標簽,但空元素一定要閉合。

例如:

XML元素的格式2

XML元素可以包含子元素或文本數據。

hello

a元素的元素體內容是b元素,而b元素的元素體內容是文本數據hello。

XML元素可以嵌套,但必須是合法嵌套。

例如:hello

[
就是錯誤的嵌套。
XML文檔的根元素
格式良好的XML文檔必須且僅有一個根元素!它是XML文檔里面唯一的;它的開始是放在最前面,結束是放在最后面。
(1) 所有的XML元素都必須有結束標簽;
(2) XML標簽對大小寫敏感;
(3) XML必須正確地嵌套;
(4) 元素的命名規則:
名稱中可以包含字母、數字或者其他的字符;
名稱不能以數字或者標點符號開始;
名稱中不能包含空格。
(5) 空元素
元素命名規范
XML元素名可以包含字母、數字以及一些其它可見字符,但必須遵循下面的一些規范:

區分大小寫;

不能以數字開頭:<1a>都是錯誤的;

最好不要以XML開頭;

不能包含空格;

元素屬性
屬性由屬性名與屬性值構成,中間用等號連接;
屬性值必須使用引號括起來,單引或雙引;
定義屬性必須遵循與標簽名相同的命名規范;
屬性必須定義在元素的開始標簽中;
一個元素中不能包含相同的屬性名;
語法,<元素名 屬性名=“屬性值”/>
注釋

注釋內容中不要出現”--”;
不要把注釋放在標簽中間;
注釋不能嵌套。

"1.0" encoding="UTF-8"?>       "1">Thinking in Java (4th Edition)        Bruce Eckel          2007        75.60    "2">Introduction to Algorithms         Thomas H.Cormen         2012        89.60

XML格式文件解析方法
1

DOM
基于DOM解析的XML分析器是將其轉換為一個對象模型的集合,用樹這種數據結構對信息進行儲存。通過DOM接口,應用程序可以在任何時候訪問XML文檔中的任何一部分數據,因此這種利用DOM接口訪問的方式也被稱為隨機訪問。這種方式也有缺陷,因為DOM分析器將整個XML文件轉換為了樹存放在內存中,當文件結構較大或者數據較復雜的時候,這種方式對內存的要求就比較高,且對于結構復雜的樹進行遍歷也是一種非常耗時的操作。不過DOM所采用的樹結構與XML存儲信息的方式相吻合,同時其隨機訪問還可利用,所以DOM接口還是具有廣泛的使用價值。

**優點** :

形成了樹結構,直觀好理解,代碼容易編寫;

解析過程中樹結構保存在內存中,方便修改。

  **缺點** :

當XML文件較大時,對內存耗費比較大,容易影響解析性能并造成內存溢出。



**核心代碼**
//Element方式    public static void element(NodeList list){        for (int i = 0; i <list.getLength() ; i++) {            Element element = (Element) list.item(i);            NodeList childNodes = element.getChildNodes();            for (int j = 0; j ()>                if (childNodes.item(j).getNodeType()== Node.ELEMENT_NODE) {                    //獲取節點                    System.out.print(childNodes.item(j).getNodeName() + ":");                    //獲取節點值                    System.out.println(childNodes.item(j).getFirstChild().getNodeValue());                }            }        }    }
public static void node(NodeList list){ for (int i = 0; i <list.getLength() ; i++) { Node node = list.item(i); NodeList childNodes = node.getChildNodes(); for (int j = 0; j ()> if (childNodes.item(j).getNodeType()==Node.ELEMENT_NODE) { System.out.print(childNodes.item(j).getNodeName() + ":"); System.out.println(childNodes.item(j).getFirstChild().getNodeValue()); } } } }
public static void main(String[] args) { //1.創建DocumentBuilderFactory對象 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //2.創建DocumentBuilder對象 try { DocumentBuilder builder = factory.newDocumentBuilder(); Document d = builder.parse("src/main/resources/Books.xml"); NodeList sList = d.getElementsByTagName("book"); //element(sList); node(sList); } catch (Exception e) { e.printStackTrace(); } }

2

SAX
SAX是一種XML解析的替代方法。相比于文檔對象模型DOM,SAX 是讀取和操作 XML 數據的更快速、更輕量的方法。SAX 允許您在讀取文檔時處理它,從而不必等待整個文檔被存儲之后才采取操作。它不涉及 DOM 所必需的開銷和概念跳躍。SAX API是一個基于事件的API ,適用于處理數據流,即隨著數據的流動而依次處理數據。SAX API 在其解析您的文檔時發生一定事件的時候會通知您。在您對其響應時,您不作保存的數據將會 被拋棄。

**優點** :

采用事件驅動模式,對內存耗費比較??;

適用于只需要處理XML數據時。

缺點:

不易編碼;

很難同時訪問同一個XML中的多處數據。

**核心代碼**
public static void main(String[] args) throws Exception {        //1.或去SAXParserFactory實例        SAXParserFactory factory = SAXParserFactory.newInstance();        //2.獲取SAXparser實例        SAXParser saxParser = factory.newSAXParser();        //創建Handel對象        SAXDemoHandel handel = new SAXDemoHandel();        saxParser.parse("src/main/resources/Books.xml",handel);    }}
class SAXDemoHandel extends DefaultHandler { //遍歷xml文件開始標簽 @Override public void startDocument() throws SAXException { super.startDocument(); System.out.println("sax解析開始"); }
//遍歷xml文件結束標簽 @Override public void endDocument() throws SAXException { super.endDocument(); System.out.println("sax解析結束"); }
@Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { super.startElement(uri, localName, qName, attributes); if (qName.equals("book")){ System.out.println("============開始遍歷student============="); //System.out.println(attributes.getValue("rollno")); } else if (!qName.equals("book")&&!qName.equals("bookstore")){ System.out.print("節點名稱:"+qName+"----"); } }
@Override public void endElement(String uri, String localName, String qName) throws SAXException { super.endElement(uri, localName, qName); if (qName.equals("book")){ System.out.println(qName+"遍歷結束"); System.out.println("============結束遍歷student============="); } }
@Override public void characters(char[] ch, int start, int length) throws SAXException { super.characters(ch, start, length); String value = new String(ch,start,length).trim(); if (!value.equals("")) { System.out.println(value); } }

3

JDOM
JDOM是一個開源項目,基于樹型結構,利用純JAVA的技術對XML文檔實現解析、生成、序列化以及多種操作。
JDOM 直接為JAVA編程服務。它利用更為強有力的JAVA語言的諸多特性(方法重載、集合概念以及映射),把SAX和DOM的功能有效地結合起來。JDOM是用Java語言讀、寫、操作XML的新API函數。在使用設計上盡可能地隱藏原來使用XML過程中的復雜性。

**優缺點** :

僅使用具體類而不使用具體接口;

API中大量使用了Collections類。



 **核心代碼**
public static void main(String[] args) throws Exception {        //1.創建SAXBuilder對象        SAXBuilder saxBuilder = new SAXBuilder();        //2.創建輸入流        InputStream is = new FileInputStream(new File("src/main/resources/Books.xml"));        //3.將輸入流加載到build中        Document document = saxBuilder.build(is);        //4.獲取根節點        Element rootElement = document.getRootElement();        //5.獲取子節點        List children = rootElement.getChildren();        for (Element child : children) {            System.out.println("通過rollno獲取屬性值:"+child.getAttribute("rollno"));            List attributes = child.getAttributes();            //打印屬性            for (Attribute attr : attributes) {                System.out.println(attr.getName()+":"+attr.getValue());            }            List childrenList = child.getChildren();            System.out.println("======獲取子節點-start======");            for (Element o : childrenList) {                System.out.println("節點名:"+o.getName()+"---"+"節點值:"+o.getValue());            }            System.out.println("======獲取子節點-end======");        }    }

4

DOM4J
DOM4J是一個Java的XML API,類似于JDOM,用來讀寫XML文件的。DOM4J是一個非常非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件。對主流的Java XML API進行的性能、功能和易用性的評測,DOM4J無論在那個方面都是非常出色的。如今你可以看到越來越多的Java軟件都在使用DOM4J來讀寫XML,例如Hibernate,包括sun公司自己的JAXM也用了Dom4j。

優缺點:

JDOM的一種智能分支,合并了許多超出基本XML文檔表示的功能;

使用接口和抽象基本類方法,是一個優秀的Java XML API;

具有性能優異,靈活性好、功能強大和極端易使用的特點;

目前使用較多。



**核心代碼**
 public static void main(String[] args) throws Exception {        //1.創建Reader對象        SAXReader reader = new SAXReader();        //2.加載xml        Document document = reader.read(new File("src/main/resources/Books.xml"));        //3.獲取根節點        Element rootElement = document.getRootElement();        Iterator iterator = rootElement.elementIterator();        while (iterator.hasNext()){            Element stu = (Element) iterator.next();            List attributes = stu.attributes();            System.out.println("======獲取屬性值======");            for (Attribute attribute : attributes) {                System.out.println(attribute.getValue());            }            System.out.println("======遍歷子節點======");            Iterator iterator1 = stu.elementIterator();            while (iterator1.hasNext()){                Element stuChild = (Element) iterator1.next();                System.out.println("節點名:"+stuChild.getName()+"---節點值:"+stuChild.getStringValue());            }        }    }

說明
源碼中采用了兩種實現方式解析XML格式文件內容: 直接讀取借助類讀取 ,但原理相同
源碼獲取
關注微信公眾號:
Java爛筆頭
對話框回復:
XML
]()

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據傳輸
    +關注

    關注

    9

    文章

    1880

    瀏覽量

    64557
  • 互聯網
    +關注

    關注

    54

    文章

    11148

    瀏覽量

    103229
  • XML
    XML
    +關注

    關注

    0

    文章

    188

    瀏覽量

    33077
收藏 人收藏

    評論

    相關推薦

    怎樣打開pdg格式文件-pdg格式文件打開軟件

    前幾天有人問我怎樣打開pdg格式文件,在這里向大家推薦一款pdg格式文件打開軟件.個人覺得它是PDG閱讀軟件中較為好用的一個。unicornviewer0.12下載
    發表于 06-19 17:27

    CAD看圖軟件將DWG格式文件轉換為JPG格式文件的方法教程

    我們大家都知道CAD軟件是以dwg格式為主的,而很多時候我們需要將dwg格式的CAD圖紙文件導出成jpg圖片格式,那么在CAD看圖軟件中怎么將DWG
    發表于 12-01 21:00

    怎么讀取ORC格式文件

    ORC格式文件讀取
    發表于 03-30 09:33

    XML格式文件出現嚴重的java.lang.N.N錯誤日志無法正常顯示預覽怎么處理?

    XML 格式文件出現嚴重的 java.lang.N.N 異常的錯誤無法顯示預覽,預覽的 XML 結構沒有任何錯誤或警告類型文件指針,有資源文件
    發表于 05-26 15:29

    DWG格式文件查看器

    DWG格式文件查看器軟件是一個非常好用的瀏覽DWG格式工具。專業的DWG圖形文件轉換和查看軟件,支持DWG?DXF?DWF?(?AutoCAD?v2.x-2006)格式轉換,輸出矢量
    發表于 10-12 01:32 ?1534次下載

    orcad轉pads格式文件的技術及實現方法

    orcad轉pads格式文件的技術及實現方法
    發表于 03-25 16:20 ?0次下載
    orcad轉pads<b class='flag-5'>格式文件</b>的技術及實現方法

    DjVu/TIFF格式文件(文檔)打開軟件工具

    DjVu、TIFF格式文件打開軟件工具 STDU Viewer STDU Viewer可以同時閱讀兼容DjVu、PDF、TIFF格式文檔且可以在Windows環境下運行。
    發表于 05-06 12:34 ?8次下載
    DjVu/TIFF<b class='flag-5'>格式文件</b>(文檔)打開軟件工具

    康佳F2587E_G(24C04)格式文件EPROM數據

    康佳F2587E_G(24C04)格式文件EPROM數據
    發表于 05-27 10:43 ?33次下載

    tif格式文件用什么打開(如何打開怎么打開) tif是什么格

    tif格式文件用什么打開(如何打開怎么打開) tif是什么格式文件? photoshop,ACDSEE都可打開TIF格式文件。 tif是什么格
    發表于 05-18 18:52 ?27.4w次閱讀

    如何打開eip文件,eip格式文件怎么打開

    如何打開eip文件,eip格式文件怎么打開 EIP文件是QQ表情包的分組文件。 表情包的文件類型
    發表于 05-07 08:52 ?1.1w次閱讀

    CAD用到的各種格式文件 你都知道嗎?

    很多人使用CAD軟件時,經常使用的格式文件僅僅局限于dwg、dxf格式文件,隨著設計水平的逐漸提高,會接觸一些二次開發小程序如LSP 、DCL、FAS、VLX等格式文件,下面就讓我帶
    發表于 10-19 11:14 ?2.2w次閱讀
    CAD用到的各種<b class='flag-5'>格式文件</b> 你都知道嗎?

    GIF文件格式詳解

    GIF文件格式詳解 GIF文件格式詳解 GIF文件格式詳解
    發表于 05-24 10:53 ?2次下載

    紫金橋軟件讀寫XML文件的方法

    XML又名“可擴展標記語言”,它提供統一的方法來描述和交換獨立于應用程序或供應商的結構化數據。這種統一性使得不同的軟件之間擁有一座通訊橋梁。XML廣泛應用于自動控制領域,因此在使用不同編程語言、組態工具時經常需要解析XML
    發表于 10-12 14:35 ?0次下載
    紫金橋軟件讀寫<b class='flag-5'>XML</b><b class='flag-5'>文件</b>的方法

    如何打開heic格式文件

    ? ? ? ? HEIC文件是iPhone手機拍攝照片默認的照片格式,在iPhone iOS 11更新后,iPhone手機所拍攝下來的手機照片就是HEIC格式;很多人都不知道如何打開HEIC
    發表于 08-01 16:50 ?848次閱讀

    eps是什么格式文件

    EPS是Encapsulated Post Script 的縮寫。EPS格式是Illustrator CS5和Photoshop CS5之間可交換的文件格式。 EPS文件是桌面印刷系統普遍使用的通用
    的頭像 發表于 11-13 17:52 ?9022次閱讀
    主站蜘蛛池模板: 18禁止看的免费污网站| 无码欧美XXXXX在线观看裸| 暖暖免费观看日本在线视频| 免费麻豆国产黄网站在线观看| 免费毛片播放| 日本无码毛片久久久九色综合| 日日碰狠狠躁久久躁综合网| 偷柏自拍亚洲综合在线| 亚洲精品无码成人AAA片| 一受多攻高h| GOGOGO高清在线播放韩国| 国产国语在线播放视频| 狠狠国产欧美在线视频| 老师紧窄粉嫩| 三级黄色a| 亚洲伊人久久大香线蕉综合图片| 中文字幕AV亚洲精品影视| videosgrati欧美另类| 国产精品一区二区在线播放| 久久精品国产首叶| 欧洲最大无人区免费高清完整版| 同时被两个男人轮流舔| 在线国内自拍精品视频| 爱情岛aqdlttv| 国产精品私人玩物在线观看| 九九热最新视频| 午夜家庭影院| 在线免费观看a视频| 午夜免费小视频| 日韩精品 电影一区 亚洲高清| 嗯啊快停下我是你老师啊H| 男男高H啪肉Np文多攻多一受| 男生jj插入女生jj| 无限好资源免费观看| 亚洲电影成人 成人影院| 国产在线播放精品视频| 国产精品自在拍在线播放| 美女内射少妇一区二区四区| 亚欧乱亚欧乱色视频| 777琪琪午夜理论电影网| 国产综合在线视频|