xml sax localName和qName的区别

2023-10-26

对于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


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xml sax localName和qName的区别 的相关文章

随机推荐

  • 怎样更改itunes备份位置_什么是iTunes备份文件?

    由于它是由Apple创建的 因此iTunes改变了用户组织和播放音乐和视频的方式 iTunes已经允许数百万用户通过iTunes Store下载他们喜爱的曲目 歌曲和视频 值得庆幸的是 iTunes拥有一个先进的备份系统 能够备份和恢复Ip
  • Android libdvm.so 与 libart.so

    Android libdvm so 与 libart so 系统升级到5 1之后 发现system lib 下面没有libdvm so了 只剩下了libart so 对于libart模式 从4 4就在Developer optins里面就可
  • FsonFormat Eclipse Plugin 一键解决复杂JSON ,快速实现JavaBean

    简介 当开发人员或者测试人员在开发或者测试接口中 去获取到接口返回的结果值时 都要通过JSONObject和JSONArray解析json结构 然后再通过For循环遍历相应的Key 最后把value值进行App展示或者校验是否预期结果 编写
  • 有关树莓派+arduino构建小车

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题 有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中 居左 居右 Sma
  • eclipse中没有runtime environments_Go语言中的panic和recover

    初识别panic和recover 本节将分析两个经常成对出现的关键字 panic 和 recover 这两个关键字都与 defer 有千丝万缕的联系 也都是 Go 语言中的内置函数 但是提供的功能却是互补的 panic 能够改变程序的控制流
  • opencv 图像雾检测_雾的检测算法

    雾的检测算法相对来说文献不是很多 这次和大家介绍两篇相对来说比较容易实现的两篇文章 其中一篇是基于灰度直方图的方式进行分析检测 另一篇是将rgb图像空间转化为hsv空间进行分析检测 1 灰度图检测 首先来说第一片 Fog Detection
  • 如何用ai写文章?这三个软件可以自动生成文章

    随着人工智能技术的不断发展 ai写作已经成为了当今的热门话题 它是指利用机器学习 自然语言处理等技术 让机器能够像人类一样写作 相较于传统写作方式 ai写作大大提高了写作的效率和质量 可以让我们的创意和技术相融合 其应用范围也非常广泛 无论
  • 探索编程世界的宝藏:程序员必掌握的20大算法

    程序员必须掌握哪些算法 文章目录 1 引言 2 冒泡排序算法 编程世界的排序魔法 3 选择排序算法 排序世界的精确挑选器 4 插入排序算法 排序世界的巧妙插珠者 5 快速排序算法 排序世界的分而治之大师 6 归并排序算法 排序世界的合而为一
  • 统计并输出该字符串中26个英文字母

    字符串 第3题 描述 输入一个字符串 统计并输出该字符串中26个英文字母 不区分大小写 出现的次数 输入 输入一个字符串 输出 分行输出26个英文字母 不区分大小写 出现的次数 输入示例 I am a student 输出示例 a 2 d
  • Python:蒙特卡罗方法模拟解决三门问题

    蒙特卡罗方法与三门问题 蒙特 卡罗方法 Monte Carlo method 也称统计模拟方法 是一种统计学的方法 模拟方法 通过大量随机样本模拟问题 从而获得所要计算的值 三门问题 三门问题 Monty Hall problem 亦称为蒙
  • STM32:TIM_OCxInit函数用法解释

    TIM OC3Init函数是用于初始化定时器TIM的PWM输出通道3的函数 可以使用以下步骤进行使用 创建一个TIM OC InitTypeDef类型的结构体对象 例如命名为TIM OCInitStruct 使用TIM OCStructIn
  • 网络基础知识总结

    一 广域网和局域网 局域网 Local Area Network 简称LAN 也就是内网 局域网就是在固定的一个地理区域内由2台以上的电脑用网线和其他网络设备搭建而成的一个封闭的计算机组 它可以是邻居之间的2台电脑 也可以是一幢100层大楼
  • [深入研究4G/5G/6G专题-41]: URLLC-12-《3GPP URLLC相关协议、规范、技术原理深度解读》-6-MAC层调度器的总体架构、调度器的原理和三种URLLC调度器的增强方案

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文主页 https blog csdn net HiWangWenBing article details 125942872 目录 前言
  • 杭电ACM 1000题

    import java util Scanner public class Main public static void main String args Scanner cin new Scanner System in while c
  • ajax 跨域 session 丢失问题

    ajax 跨域时session丢失了 解决方法 首先我 Google 了一下这个问题的原因 我找到了这个 1 Access Control Allow Origin该字段是必须的 它的值要么是请求时Origin字段的值 要么是一个 表示接受
  • Cookie与前端安全

    目录 一 Cookie的作用 二 cookie与http协议 1 http响应 cookie的生成 2 http请求 cookie的发送 三 Cookie的属性 1 Expires Max Age 2 Domain Path 3 Secur
  • 30分钟速成TypeScript

    一 TypeScript 是什么 TypeScript 是 JavaScript 的超集 在 JavaScript 的基础上增加了类 模块 接口 泛型和静态类型 可选 等常见的概念 从编程语言的动 静来区分 TypeScript属于静态类型
  • JS代码风格利器——Eslint

    ESLint 是一个开源的 JavaScript 代码检查工具 由 Nicholas C Zakas 于 2013 年 6 月 创建 代码检查是一种静态的分析 常用于寻找有问题的模式或者代码 并且不依赖于具体 的编码风格 对大多数编程语言来
  • 网易云音乐首页导航样式的实现

    实现效果图 背景图片
  • xml sax localName和qName的区别

    对于DefaultHandler类中方法的成员 String uri String localName String qName Attributes attributes 弄的不是很清楚 于是得到下面这片文章感觉讲的蛮清楚的 无节操的贴过