打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
xml sax localName和qName的区别

对于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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
几个解析XML的例子
Android通过jsp连接Oracle数据库 -- 实例
Android使用SAX读取XML文件
sax解析xml
假药卖高价!真正的骗子在这里
我关注的网址
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服