單元測試----xml檔案介紹
阿新 • • 發佈:2020-09-16
軟體測試
目錄
一、什麼是XML?:
XML指可擴充套件標記語言
XML是一種標記語句,很類似HTML
XML標籤沒有被預定義,需要自行定義標籤
二、XML和HTML的差異:
1.XML為不同的目的而設計
2.XML被設計為傳輸和儲存資料,其焦點是資料的內容,HTML被設計用來顯示資料, 其焦點是資料的外觀
3.XML意在傳輸資訊,而HTML意在顯示資訊
三、XML的特點
1.XML可以自定義標籤
<note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note> 上例中的標籤沒有在任何XML標準中定義過,比如<to><from>這些標籤都是有作者自己發明的
2.XML必須包含根元素
XML 文件必須有一個元素是所有其他元素的父元素。該元素稱為根元素。
<?xml version="1.0" encoding="UTF-8" ?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
如上所示,
XML檔案的根元素為note,剩下的4行描述的是根的子元素
所有的XML標籤都必須有關閉標籤,在XML中省略標籤是非法的,所有的元素都必須有關閉標籤
如下所示:
<p>This is a paragraph</p>
<p>This is another paragraph</p>
3.XML標籤對大小寫敏感
XML 標籤對大小寫敏感。在 XML 中,標籤 <Letter> 與標籤 <letter> 是不同的。
必須使用相同的大小寫來編寫開啟標籤和關閉標籤:
<Message>這是錯誤的。</message>
<message>這是正確的。</message>
XML必須正確的巢狀:如下所示:由於 <i> 元素是在 <b> 元素內開啟的,那麼它必須在 <b> 元素內關閉。
<b><i>This text is bold and italic</i></b>
4.XML 的屬性值須加引號
與 HTML 類似,XML 也可擁有屬性(名稱/值的對)。
在 XML 中,XML 的屬性值須加引號。請研究下面的兩個 XML 文件。第一個是錯誤的,第二個是正確的:
<note date=08/08/2008>
<to>George</to>
<from>John</from>
</note>
<note date="08/08/2008">
<to>George</to>
<from>John</from>
</note>
在第一個文件中的錯誤是,note 元素中的 date 屬性沒有加引號。
5.標籤可以自由命名
6.標籤成對出現
7.標籤可以重名
四、XML 中的註釋
1.在 XML 中編寫註釋的語法與 HTML 的語法很相似:
<!-- This is a comment -->
五、什麼是 XML 元素?
1.XML 元素
XML 元素指的是從(且包括)開始標籤直到(且包括)結束標籤的部分。
元素可包含其他元素、文字或者兩者的混合物。元素也可以擁有屬性。
<bookstore>
<book category="CHILDREN">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
在上例中,<bookstore> 和 <book> 都擁有元素內容,因為它們包含了其他元素。<author> 只有文字內容,因為它僅包含文字。
在上例中,只有 <book> 元素擁有屬性 (category="CHILDREN")。
六、XML 命名規則
XML 元素必須遵循以下命名規則:
1.名稱可以含字母、數字以及其他的字元
2.名稱不能以數字或者標點符號開始
3.名稱不能以字元 “xml”(或者 XML、Xml)開始
4.名稱不能包含空格
七、XML讀取文字和開啟檔案
1.xml讀取文字
from xml.dom import minidom
2.xml開啟檔案
root =minidom.parse(filepath)
firstnode =root.getElementsByTagName(onenode)[0]
secondnode=firstnode.getElementsByTagName(twonodee)[0].firstChild.data