【XML】XML的解析方式(dom+sax)以及解析器(dom4j+jaxp+jdom)

从零开始学习信号完整性(SIPI)--2 上一节我们已经谈过,信号完整性研究的是如何使驱动器输出的信号传输到接收器件并被正确的接收。 信号完整性的三要素包含了:信号、驱动接收芯片、传输通道。 这其中信号是主体,我们要做的主要工作就是设计好信号的传输路径为信号的正确传输扫清障碍。要做信号完整性分析与设计首先要了解信号的特性,以及信号质量的判别标准。 对一个信号进行描述通常需要如下几个指标: 信号特性的描述 摆幅:信号从低电平到高电平之间的电压差,对于单端信号通常由信号的供电电压决...... 阅读详情

1.xml的解析方式(技术):dom 和 sax

>>dom方式解析:

根据xml的层级结构在内存中分配一个树形结构,把xml的标签、属性和文本都封装成对象

**优点:实现增删改操作很方便

**缺点:如果文件过大会造成内存溢出

**解析过程:

>>sax方式解析:(simple api xml)

采用事件驱动,边读边解析

       --从上到下,一行一行的解析,解析到某个对象就返回对象的名称

javax.xml.parsers包里面有两个关于SAX的类
        ** SAXParser
            此类的实例可以从 SAXParserFactory.newSAXParser() 方法获得
            - parse(File f, DefaultHandler dh) 
                ** 两个参数:(XML的路径,事件处理器(事件驱动))

        ** SAXParserFactory
            实例 newInstance() 方法得到

**优点:如果文件过大不会造成内存溢出,查询操作容易实现

**缺点:不能实现增删改操作

**解析过程:

先执行parse方法,将指定文件内容解析为XML,然后就一行一行的解析,

        -当解析到开始标签时候,自动执行startElement方法
        -当解析到文本时候,自动执行characters方法
        -当解析到结束标签时候,自动执行endElement方法

 

 

1.针对dom和sax解析方式的解析器jaxp/dom4j/jdom

>>jaxp解析器(dom和sax区分不同的类)

在javase中(包javax.xml.parsers)

**解析步骤:

先获取解析器工厂的实例(xxxFactory.newInstance())

通过解析器工厂获取解析器( factory.newDocumentBuilder()  or  factory.newSAXParser() )

 

四个类:分别针对dom和sax解析

dom:

        -DocumentBuilder:解析器类

                 - 这个类是一个抽象类,不能new,
                   此类的实例可以从 DocumentBuilderFactory.newDocumentBuilder() 方法获取

                 - 一个方法,可以解析xml  parse("xml路径") 返回是 Document 整个文档
                 - 返回的document是一个接口,父节点是Node,如果在document里面找不到想要的方法,到Node里面去找
                
                 - 在document里面方法 
                        getElementsByTagName(String tagname) 
                        -- 这个方法可以得到标签
                        -- 返回集合 NodeList

                        createElement(String tagName)
                        -- 创建标签

                        createTextNode(String data) 
                        -- 创建文本

                        appendChild(Node newChild) 
                        -- 把文本添加到标签下面

                        removeChild(Node oldChild) 
                        -- 删除节点

                        getParentNode() 
                        -- 获取父节点

                        NodeList list
                        - getLength() 得到集合的长度
                        - item(int index)下标取到具体的值    

                        getTextContent()
                        - 得到标签里面的内容

        -DocumentBuilderFactory:解析器工厂

                 - 这个类也是一个抽象类,不能new
                   newInstance() 获取 DocumentBuilderFactory 的实例。

sax:

        -SAXParser:解析器类

                 - 这个类是一个抽象类,不能new,
                   此类的实例可以从 SAXParserFactory.newSAXParser()方法获取

                 - 一个方法,可以解析xml  parse("xml路径",事件处理器) 
                 - 重写一个类继承DefaultHandler 的三个自动调用方法(startElement / characters / endElement)

        -SAXParserFactory:解析器工厂

                 - 这个类也是一个抽象类,不能new
                   newInstance() 获取 SAXParserFactory 的实例。

 

>>dom4j解析器(将sax和dom解析方法集合一起,可以增删改查)

需要导包(不是javase的一部分)

1.创建解析器

SAXReader reader = new SAXReader();

2.得到document(父节点是Node,如果document找不到想要的方法就去Node去找)

Document document = reader.read(url);   // xml文档的路径url

3.得到根结点(Element父节点也是Node,找不到的方法就去Node)

Element root = document.getRootElement();  //获取根结点

4.得到所需结点,根据需求进行操作

List<Element> list = root.elements("p");

....

但是这样一层一层获取会有点慢

所以dom4j提供了可以和XPATH结合的方式来进行查询元素

默认是不允许xpath的

所以需要导包 jaxen-1.1-beta-6.jar

 在dom4j里面提供了Document的两个方法,用来支持xpath
        *** selectNodes("xpath表达式")
            - 获取多个节点
        *** selectSingleNode("xpath表达式")
            - 获取一个节点

xpath表达式:可以直接获取到某个元素 ,不用一层一层获取

    * 第一种形式
        /AAA/DDD/BBB: 表示一层一层的,AAA下面 DDD下面的BBB
    * 第二种形式
        //BBB: 表示和这个名称相同,表示只要名称是BBB,都得到
    * 第三种形式
        /*: 所有元素
    * 第四种形式
        ** BBB[1]: 表示第一个BBB元素
        ×× BBB[last()]:表示最后一个BBB元素
    * 第五种形式
        ** //BBB[@id]: 表示只要BBB元素上面有id属性,都得到
    * 第六种形式
        ** //BBB[@id='b1'] 表示元素名称是BBB,在BBB上面有id属性,并且id的属性值是b1

>>jdom解析器

大致和dom4j差不多

String xmlpath = TEST.class.getResource("/test.xml").getFile();
         try {
             xmlpath = URLDecoder.decode(xmlpath, "utf-8");
         } catch (UnsupportedEncodingException e1) {
             e1.printStackTrace();
         }
          SAXBuilder builder=new SAXBuilder(false);
          try {
          Document doc=builder.build(xmlpath);

JDOM 类

JDOM定义了几个Java类。以下是最常见的类:

  • Document - 表示整个XML文档。文档Document对象是通常被称为DOM树。

  • Element - 表示一个XML元素。 Element对象有方法来操作其子元素,它的文本,属性和名称空间。

  • Attribute 表示元素的属性。属性有方法来获取和设置属性的值。它有家长和属性类型。

  • Text 表示XML标记的文本。

  • Common 表示一个XML文档中的注释。

常见的JDOM方法

使用JDOM,还有会经常用到的几种方法:

  • SAXBuilder.build(xmlSource)() - 构建XML源的JDOM文档。

  • Document.getRootElement() - 得到XML的根元素。

  • Element.getName() - 获取XML节点的名称。

  • Element.getChildren() - 得到一个元素的所有直接子节点。

  • Node.getChildren(Name) - 获得具有给定名称的直接子节点。

  • Node.getChild(Name) - 获取使用给定名称的第一个孩子节点。

CLAHE 算法学习 matlab 概念可参考: CLAHE (Contrast Limited Adaptive Histogram Equalization)算法学习CLAHE具体实现主要包括6个步骤。1):分块。将输入图像划分为大小相等的不重叠子块,每个子块含有的像素数为M。参考示例为8×8块。 2):计算子块直方图。 3):计算剪切阈值clipLimit 4):像素点重分配。对每个子块,使用步骤三中多余的像素重新分配。 5):直方图均衡。 6):像素点灰度值重构。(源码中采用了双线性插值) http://www.realtimer 阅读详情

相关推荐

dom4j下的sax解析xml

dom4jsax解析xml文件 sax解析大文件比dom更快 更节省内存,xml测试文件在src下,可直接运行应用jar包在lib下,无需导入

saxdom两种xml解析器的区别

文章目录前言一、domsax的区别二、解析xml1. 准备2. dom方式3. sax方式总结 前言 JDK 中内置了 dom sax 两种解析 xml 文件的方式,两者各有利弊,根据场景选用 一、domsax的区别 dom方式的特点: 树型解析器,将读入的xml文档转换成树结构对象[Document] 基于内存的,不管文件有多大,都会将所有的内容预先装载到内存中 可以读取xml文件内容,也可以向xml文件中插入数据,修改数据 sax方式的特点: 流机制解析器,在读入xml文档时生成相应的

weixin_42132143的博客 2261

jdom介绍及使用指南

一、JDOM包概览二、JDOM类说明三、JDOM主要使用方法四、JDOM的应用

XML文档详解

XML文档 一、XML文件 二、Dom4J解析XML文件 三、Sax解析XML文件 四、使用Dom4j的XPath解析XML文件 4.1XPath语法 4.2 获取sys-config.xml文件的配置信息 4.3 获取server.xml文件的配置信息 4.4 获取bookstore.xml文件的配置信息

m0_71229255的博客 1435

XML解析dom

xml一共有三种解析放方法 ①DOM解析SAX解析 ③Android内置的Pull解析 getChildNodes()-获取某个元素(节点)的子节点; getNodeType()-获取某个元素(节点)类型; getAttribute()-获取某个元素(节点)的属性值; getNodeValue()-获取节点值(文本内容) getNodeName()-获取节点名称 getFirstChi

万物weiyi 347

JAXPDOM4J是什么关系?

JAXP是sun提出的一个规范,用于定义如何解析转换xml文档的接口,目前版本已经达到1.3,根据解析转换供应商无关性,解析器转换器可以在具体运行时进行多样更换。这本身对于应用开发来说是一个福音。但是目前jaxp在国内的使用并不是想象中那样的广泛,这也是由于一定的市场原因存在(对于不同版本的jvm的支持的需求)。现在更多的应用采用dom4jjdom,其操作接口更为简便。个人以为,dom4j

IDEAL Garden 5304

XML解析DOMSAXJAXPDOM4J

XML解析DOMSAXJAXPDOM4J 1. DOMSAX XML是 一种通用的数据交换格式,可以使数据在各种应用程序之间轻松地实现数据交换。 虽然XML有各种各样的优点,但对于XML解析并不是一件简单的事。 在XML发展的过程中,出现了两种解析模型,即DOMSAX。这两种模型各有各的优点以及缺点。 1. DOM 文档对象模型(Document Object Model,简称DO...

zysns的博客 494

使用JAXP进行DOM解析_SAX解析

l XML解析方式分为两种:domsaxdom(Document ObjectModel, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式。 •sax(Simple API forXML) 不是官方标准,但它是 XML 社区事实上的标准,几乎所有的 XML 解析器都支持它。 l XML解析器 •Crimson、Xerces 、Aelfred2 l XML解析...

网站开发初中级代码参考-转载 75

006_03Java解析XMLDOM方式SAX方式

XML解析方式分为两种:DOM方式SAX方式   DOM:Document Object Model,文档对象模型。这种方式是W3C推荐的处理XML的一种方式。   SAX:Simple API for XML。这种方式不是官方标准,属于开源社区XML-DEV,几乎所有的XML解析器都支持它。 XML解析开发包   JAXP:是SUN公司推出的解析标准实现。   Do...

dengquan8369的博客 112

XML解析技术概述

XML解析技术概述     1.XML解析方式分为两种:domsax          (1)dom(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式(对文档crud操作比较方便,但内存消耗比较大)          (2)sax(Simple API for XML) 不是官方标准,但它是 XML 社区事实上的标准

ITSTAR 779

DOMSAX

1.DOMSAX解析xml文件有两种方式domsax方式.DOMSAX都只是接口,是解析xml的两种标准.(1)使用DOM要求解析器把整个XML文档装载到一个Document对象中。Document对象包含文档元素,即根元素,根元素包含N多个子元素…  一个XML文档解析后对应一个Document对象,这说明使用DOM解析XML文档方便使用,因为元素与元素之间还保存着结构关系。  优点:使用...

shdxl的博客 283

苦尽甘来 一个月学通JavaWeb(三 XML

夜光序言:   人打交道时,请牢记这一点--人并非理性生物。他们由情感驱使,被偏见支配,傲慢与虚荣是他们的动力之源~~~   正文: 三、XML解析器介绍   操作XML文档概述   1 如何操作XML文档【夜光:面试一般都会玩这个骚操作,问你增删改查~~其实检不出多大水平】 XML文档也是数据的一种,对数据的操作也不外乎是“增删改查”。也被大家称之为“CRUD”。 ...

夜光的博客 321

java 解析3层xml_java xml 解析方式汇总#高级程序员必备技能#

1。xml背景格式良好的(web-fromed)xml可以不需要文档类型定义(DTD),只要满足基本的xml格式规范就可以认为是格式良好的xml文档。但是格式标准,只能说明元素、标签、格式是合法的,并不能说明元素是有意义的,或者说规范的。有效的xml文档,首先要求是格式良好的文档,同时遵守相应的DTD文件约束。2。xml解析xml文档解析的大致使用过程如下图: 由xml解析器解析操作指定的xml...

weixin_39978863的博客 242

【转】常见的解析方式解析器

解析方式: 1.DOM:要求解析器把整个XML文档装载到内存,并解析成一个Document对象。 a)优点:元素与元素之间保留结构关系,故可以进行增删改查操作。 b)缺点:XML文档过大,可能出现内存溢出显现,解析速度慢。 2.SAX:是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。并以事件驱动的方式进行具体解析,每执行一行,都将触发对应的事件。(了解) a)优点:处理速度快,可以...

liangtaox8的博客 241

DomSax

1.DOMSAX 解析xml文件有两种方式domsax方式. DOMSAX都只是接口,是解析xml的两种标准. (1)使用DOM要求解析器把整个XML文档装载到一个Document对象中。Document对象包含文档元素,即根元素,根元素包含N多个子元素…   一个XML文档解析后对应一个Document对象,这说明使用DOM解析XML文档方便使用,因为元素与元素之间还保存着结构关系

宝爷的专栏 605

DOM解析

将数据存储在XML后, 我们就希望通过程序获得XML 的内容 . 如果我们使用java 基础所学习 IO 知识是可以完成的, 不过你需要非常繁琐的操作才可以完成, 且开发中会遇到不同问题, 为不同问题提供不同的解析方式, 并提交对应的解析器, 方便开发人员操作XML. 关于解析方式解析器 较常见的解析方式有三种 如下: 1. DOM: 要求解析器将整个XML 文档装在到内存, ...

学无止境 1332

新建JDOM的Element节点并加子节点及其text

参考:http://stackoverflow.com/questions/15209245/adding-content-to-existing-xml-with-jdom

yasi_xi的专栏 7776

JDOM的Element的getChild(String name)getChildren((String name)方法

Element org.jdom.Element.getChild(String name) Note: This element neither has attached source nor attached Javadoc and hence no Javadoc could be found.例子: 这是一个XML文件<?xml version="1.0" encoding="UTF-8

jluzh04140717的博客 1万+

利用JAXPDOM4J解析XML

解析XML主要有两种思想,一种是SAX(Simple API for XML),另一种是DOM(文档对象模型),其中在J2EE中,提供了JAXP来实现这两种解析,本文主要利用JAXP实现SAX解析,同时介绍时下流行的DOM4J实现DOM解析。 原创文章欢迎转载,请保留出处。 若有任何疑问建议,欢迎回复。 邮箱:Maxwell_nc@163.com

成长之路 2152

2000-2023年上市公司财务困境数据(ZScore模型)(含原始数据+计算结果).xlsx

2000-2023年上市公司财务困境数据ZScore模型(含原始数据+结果)1、时间:2000-2023年2、来源:上市公司年报3、指标:证券代码、证券简称、统计截止日期、是否发生ST或*ST或PT、是否发生暂停上市、行业代码、行业名称、上市日期、总资产(元)、营运资金(元)、留存收益(元)、权益市值(元)、总负债(元)、营业收入(元)、息税前利润(元)、Z值4、范围:A股上市公司,样本量:6.2W+5、计算方法:Z = 1.2X1 + 1.4X2+ 3.3X3 + 0.6X4 + 0.999 X5其中:X1=营运资金/总资产;反映资产的变现能力规模特征。X2=留存收益/总资产;反映公司的累积盈利能力。X3 = EBIT/总资产;反映资产的盈利能力。X4=权益的市场价值/总负债的账面价值;是衡量一家公司财务结构、表明所有者权益债权人权益相对关系的比率,可以反映一家公司的偿债能力。X5=营业收入/总资产; 反映企业资产周转情况, 用来衡量公司利用资产的效率情况。

上一篇: 【XML】XML约束(DTD/Schema)
下一篇: 【HTTP】请求协议(GET/POST)和响应协议内容分析
TypantK
博客等级 码龄9年 53粉丝 85原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值