天天看点

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"。