天天看點

localName和qName的差別

1. xml中的localName和QName

2.<websites  
3.    xmlns:sina="http://www.sina.com"  
4.    xmlns:baidu="http://www.baidu.com">  
5.      
6.    <sina:website sina:blog="blog.sina.com">新浪</sina:website>  
7.    <baidu:website baidu:blog="hi.baidu.com">百度</baidu:website>  
8.</websites>  
           

Namespace(空間名稱,命名空間)

引入的原因是為了避免混淆。例如上面的這個XML文檔,sina和baidu都有blog屬性,定義了兩個namespace,就像sax官網說的,用namespace是為了實作更多的擴充功能,作為基本應用,很多時候都用不到它:

sina的namespace: http://www.sina.com

baidu的namespace:http://www.baidu.com

1. xmlns:sina="http://www.sina.com"  

2. xmlns:baidu="http://www.baidu.com">  

namespace的值可以任意,但是注意不要重複。一般預設的格式都是以url來作為namespace,比如

xmlns:Android="http://schemas.android.com/apk/res/android。

Prefix(字首)

sina:blog中 sina就是字首。

LocalName(本地名稱)

sina:blog 中blog就是localName。

QName(Qualified Name 限定的名稱)

sina:blog就是QName,相當于字首+":"+LocalName。

uri(不是url哈)

例如sina:blog的uri就是字首sina的namespace,即"http://www.sina.com"。

2.sax解析localName與qName

sax  simple API for XML,現在有兩個版本,sax和sax2。

sax不支援LocalName、QName和uri。對于屬性sina:blog="blog.sina.com",sax解析的結果是LocalName=QName="sina:blog",uri="",value="blog.sina.com"。

sax2支援LocalName、QName、uri。對于屬性sina:blog="blog.sina.com",sax2解析的結果是LocalName="blog",QName="sina:blog",uri="",value="blog.sina.com"。