xml sax localName和qName的區別

來源:互聯網
上載者:User

對於DefaultHandler類中方法的成員
String uri, String localName, String qName,Attributes attributes 弄的不是很清楚,於是得到下面這片文章感覺講的蠻清楚的。無節操的貼過來了。

http://blog.csdn.net/wssiqi/article/details/8239357

1. xml中的localName和QName
<?xml version="1.0" encoding="utf-8"?>  <websites      xmlns:sina="http://www.sina.com"      xmlns:baidu="http://www.baidu.com">            <sina:website sina:blog="blog.sina.com">新浪</sina:website>      <baidu:website baidu:blog="hi.baidu.com">百度</baidu:website>  </websites>

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

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

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

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

xmlns:sina="http://www.sina.com"  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"。

測試:

package com.siqi.xml;            import org.xml.sax.Attributes;      import org.xml.sax.SAXException;      import org.xml.sax.helpers.DefaultHandler;            /**      * 要用sax解析,需要實現一個ParseHandler      * @author siqi      *      */      public class SaxParseHandler extends DefaultHandler{                /**          * 重寫了DefaultHandler中的startElement函數,每解析到          * 一個元素(element)的時候都會觸發這個函數,並且將這個element          * 的屬性attributes和值value當作參數傳進來。除了startElement,          * 還有startDocument,endDOucment,endElement,要根據需要          * 重寫這些函數。          */          @Override          public void startElement(String uri, String localName, String qName,                  Attributes attributes) throws SAXException {                            //列印element的基本資料,qName              System.out.println("Element qName    : "+qName);              System.out.println("Element localName: "+localName);              System.out.println("Element uri      : "+uri);              //列印element的所有屬性attributes              for(int i=0; i<attributes.getLength(); i++) {                  System.out.println("");                  System.out.println("  attribute qName    : "+attributes.getQName(i));                  System.out.println("  attribute localName: "+attributes.getLocalName(i));                  System.out.println("  attribute value    : "+attributes.getValue(i));                  System.out.println("  attribute uri      : "+attributes.getURI(i));              }              System.out.println("");              super.startElement(uri, localName, qName, attributes);          }                }

parse xml file use sax2  Element qName    : websites  Element localName: websites  Element uri      :     Element qName    : sina:website  Element localName: website  Element uri      : http://www.sina.com      attribute qName    : sina:blog    attribute localName: blog    attribute value    : blog.sina.com    attribute uri      : http://www.sina.com    Element qName    : baidu:website  Element localName: website  Element uri      : http://www.baidu.com      attribute qName    : baidu:blog    attribute localName: blog    attribute value    : hi.baidu.com    attribute uri      : http://www.baidu.com

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.