XML的命名空間與python解析方法

2021-06-27 10:20:32 字數 964 閱讀 6294

在 xml 中,元素名稱是由開發者定義的,當兩個不同的文件使用相同的元素名時,就會發生命名衝突,而xml 命名空間提供避免元素命名衝突的方法。

xml 命名空間屬性被放置於元素的開始標籤之中,並使用以下的語法:

xmlns:namespace-prefix="namespaceuri"

當命名空間被定義在元素的開始標籤中時,所有帶有相同字首的子元素都會與同乙個命名空間相關聯。

注釋:用於標示命名空間的位址不會被解析器用於查詢資訊。其惟一的作用是賦予命名空間乙個惟一的名稱。

除了顯式定義,為元素定義預設的命名空間可以讓我們省去在所有的子元素中使用字首的工作。也就是說所有沒有字首的標籤都會帶有預設的命名空間

請使用下面的語法:

xmlns="namespaceuri"

解析帶有命名空間的xml檔案時,要注意標籤的名字是命名空間與標籤的結合,比如下面的xml檔案:

<?xml version='1.0' encoding='utf-8'?>

5.0

其中預設的命名空間為xmls,另外宣告了兩個命名空間xmlns:vuln和xmlns:cvss。如果使用python的elementtree解析,下面的**是錯誤的

node.find('score').text
執行的時候會報錯,如下:
attributeerror: 'nonetype' object has no attribute 'text'
也就是說,node.find('score')沒有找到任何結果。

正確的訪問方式應該是這樣的,也就是加上命名空間:

cvss = 「」

node.find(cvss + 'score')

對於例子中的entry這種沒有顯式字首的標籤,他們是帶有隱式字首xmlns的,所以訪問時要加上xmlns的值

XML 命名空間

xml 命名空間提供了一種避免元素命名衝突的方法。因為xml文件中使用的元素不是固定的,那麼兩個不同的xml文件使用同乙個名字來描述不同型別的元素的情況就可能發生。而這種情況又往往會導致命名衝突。請看下面兩個例子 這個 xml 文件在table元素中攜帶了水果的資訊 bananas 這個 xml 文...

XML 命名空間

xml 命名空間 xml 命名空間提供了一種避免元素命名衝突的方法。命名衝突 因為xml文件中使用的元素不是固定的,那麼兩個不同的xml文件使用同乙個名字來描述不同型別的元素的情況就可能發生。而這種情況又往往會導致命名衝突。請看下面兩個例子 這個 xml 文件在table元素中攜帶了水果的資訊 ba...

xml命名空間

xml命名空間 這個理解起來總感覺有些抽象,不太好懂,自己學的也是一知半解,但是感覺它的存在卻是很不同凡響的,在xml的應用中,給我們帶來了很多方便,也讓xml的功能得到了很大的提公升,自己感覺的,呵呵,有說的不對的地方,不要見笑喲 在進入正題之前,我們先引用乙個例子 bananas 在上面這個xm...