dom

XML DOM解析

十年热恋 提交于 2020-03-24 06:35:43
创建一个xml文件 建一个文件夹导入jar包 building add 点入 public static void main(String[] args) throws DocumentException, ClassNotFoundException, InstantiationException, IllegalAccessException { // 1.获取解析器 SAXReader sax=new SAXReader(); // 2.获得document文档对象 Document doc=sax.read("src/com/oracle/demo04/web.xml"); // 3.获取根元素 Element element=doc.getRootElement(); // 4.判断元素名称为servlet的元素 Element servlet=element.element("servlet"); // 5.获取servlet-class元素 Element className=servlet.element("servlet-class"); //开始反射 获取MyServlet字节码文件对象 Class c=Class.forName(className.getText()); //快速创建对象 Object obj=c.newInstance(); //向下转型

使用jaxp对比xml进行DOM解析

一笑奈何 提交于 2020-03-24 06:33:34
/*DOM解析编程 •遍历所有节点 •查找某一个节点 •删除结点 •更新结点 •添加节点 /* package cn.itcast.jaxp; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.junit.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node;

XML教程——采用SAX来解析XML

怎甘沉沦 提交于 2020-03-24 06:32:56
什么是 SAX 读取和操纵 XML 文件的标准方法是 DOM(“文档对象模型”)。遗憾的是,这种方法需要读取整个文件并将它存储到树结构中,因而效率不高、缓慢,并且会过度使用资源。 一种替代方法是使用 Simple API for XML 或 SAX。SAX 允许正在读取文档时处理该文档,这避免了在采取操作之前需要等待存储文档的所有内容。 SAX 是由 XML-DEV 邮件列表的成员开发的,Java 版本由 David Megginson 维护。他们的目的是提供一种更自然的方法来使用 XML,这种方法不会涉及到使用 DOM 的那种开销。 结果是基于事件的 API。解析器将事件(譬如,元素的开始或结束)发送给处理信息的事件处理程序。然后,应用程序自己可以处理数据。虽然原始文档保持不变,但 SAX 提供了操纵数据的方法,然后会将该方法导向另一个过程或文档。 对于 SAX,没有官方的标准;万维网(W3C)或其它官方组织不维护 SAX,但在 XML 社区中,它是一个事实上的标准。 回页首 SAX 处理是如何工作的 SAX 分析经过其的 XML 流,这非常象老式的自动收报机纸条。考虑以下 XML 代码片断: <?xml version="1.0"?> <samples> <server>UNIX</server> <monitor>color</monitor> </samples>

java解析xml字符串方法

倖福魔咒の 提交于 2020-03-24 06:32:42
一,用DOM4J 针对无重复标签的xml字符串格式,如下: 针对此种情况可用 DOM4J 解析法,引入 dom4j的相关jar包代码如下: Document document=DocumentHelper.parseText(xmlStr); //xmlStr为上图格式的字符串 Node VideoCompany=document.selectSingleNode("//VideoCompany"); //获取节点对象,注意引号内的“//”必须加 ,否则报错 Node DevIP=document.selectSingleNode("//DevIP"); //根据节点对象获取相应信息 String videoCompany=VideoCompany.getText(); String devIp=DevIP.getText(); System.out.println(devIp) //此时输出结果极为字符串:3333 二,用DOM 针对有重复标签的xml字符串格式,如下: <?xml version="1.0" encoding="UTF-8"?> <books> <book id="001"> <title>Harry Potter</title> <author>J K. Rowling</author> </book> <book id="002"> <title

jaxp解析XML之DOM解析

假如想象 提交于 2020-03-24 06:32:31
XML解析技术 XML解析方式分为三种一种是DOM解析一种是SAX解析 DOM思想:将整个xml加载入内存,形成围挡对象,所有对xml操作都是对内存中节点对象进行, DOM是官方xml解析标准,同时支持解析其他各种语言 SAX解析方式的出现,因为DOM的解析方式需要对文档进行加载入内存,当文档较大的时候比较消耗资源,这时候就出现了SAX解析 SAX思想:一边解析,一边处理,一边释放资源 在JDK6中又引入了另一种StAX解析方式 是一种拉模式的xml解析方式,而SAX是一种推模式XML解析方式 推模式由服务器端为主导,向客户端发送数据,push模式 拉模式由客户端为主导,主动地向服务器申请数据,pull模式 XML解析开发包 JAXP sun官方推出的解析实现方式同时支持三种解析方式 DOM4j 开源社区框架,支持DOM解析方式 XML PULL 安卓移动设备内置,支持XML PULL解析方式 DOM支持回写 会将整个XML载入内存,以树形结构方式存储,XML比较复杂的时候,或者当你需要随机处理文档中数据的时候不建议使用 SAX/STAX 相比DOM是一种更为轻量级的方案 采用串行方法读取---文件输入流(字节,字符)读取方式 不支持过程中修改XML数据 编程较为复杂 具体使用哪种解析方式要根据实际情况来判断 1,应用程序是否必须对数据进行修改,并作为XML文档输出

Java中四种XML解析技术

爷,独闯天下 提交于 2020-03-24 06:32:19
在平时工作中,难免会遇到把 XML 作为数据存储格式 。 面对目前种类繁多的解决方案,哪个最适合我们呢?在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历 XML 这块来测试,因为遍历 XML 是工作中使用最多的(至少我认为) 。 测试环境:   AMD 毒龙1.4G OC 1 . 5G、256M DDR333、Windows2000 Server SP4、Sun JDK 1 . 4.1+Eclipse 2.1+Resin 2.1 . 8,在 Debug 模式下测试。  XML 文件格式如下: <?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE>   <NO>A1234</NO>   <ADDR>四川省XX县XX镇XX路X段XX号</ADDR>  </VALUE>  <VALUE>   <NO>B1234</NO>   <ADDR>四川省XX市XX乡XX村XX组</ADDR>  </VALUE> </RESULT>  测试方法:   采用 JSP 端调用Bean(至于为什么采用JSP来调用,请参考: http://blog.csdn.net/rosen/archive/2004/10/15/138324.aspx ),让每一种方案分别解析10K 、 100K、1000K、10000K的 XML 文件

Java解析xml的主要解析器: SAX和DOM的选择(附上新方法--Pull解析)

最后都变了- 提交于 2020-03-24 06:21:16
Java的xml解析器库有很多,总的来说,万变不离其宗的就是SAX和DOM解析器。 SAX的包是org.xml.sax DOM的包是org.w3c.dom 1) DOM DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而 DOM 被认为是基于树或基于对象的。DOM 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像 SAX 那样是一次性的处理。DOM 使用起来也要简单得多。 另一方面,对于特别大的文档,解析和加载整个文档可能很慢且很耗资源,因此使用其他手段来处理这样的数据会更好。这些基于事件的模型,比如 SAX。 2) SAX 这种处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX 还比它的替代者 DOM 快许多。 3) 选择 DOM 还是选择

jQuery DOM操作之删除节点

◇◆丶佛笑我妖孽 提交于 2020-03-24 05:33:21
3 月,跳不动了?>>> 下面示例可能用到如下HTML代码: <ul> <li title="t1">苹果</li> <li>香蕉</li> <li>橘子</li> <li>葡萄</li> <li>草莓</li> </ul> 1、remove()方法: 作用:从DOM中删除所有匹配的元素,传入的参数用于根据jQuery表达式来筛选元素。 例如,删除上图中<ul>节点中的第二个<li>元素节点,jQuery代码如下: $(document).ready(function() { $("ul li:eq(1)").remove(); }); 当某个节点用remove()方法删除后,该节点所包含的所有后代节点将同时被删除。这个方法的返回值是一个指向已被删除的节点的引用,因此可以在以后再使用这些元素。下面的jQuery代码说明元素用remove()方法删除后,还是可以继续使用的。 var $li=$("ul li:eq(1)").remove(); $li.appendTo("ul"); //把删除的节点又重新添加到<ul>元素里 可以直接使用appendTo()方法的特性来简化以上代码: $("ul li:eq(1)").appendTo("ul");//appendTo()方法也可以用来移动元素,移动元素时首先从文档上删除此元素,然后将该元素插入到文档中的指定节点。 另外remove(

深度理解DOM拷贝clone()

元气小坏坏 提交于 2020-03-23 18:29:40
克隆节点是DOM的常见操作,jQuery提供一个clone方法,专门用于处理dom的克隆: .clone()方法深度 复制所有匹配的元素集合,包括所有匹配元素、匹配元素的下级元素、文字节点。 clone方法比较简单就是克隆节点,但是需要注意,如果节点有事件或者数据之类的其他处理,我们需要通过clone(ture)传递一个布尔值ture用来指定,这样不仅仅只是克隆单纯的节点结构,还要把附带的事件与数据给一并克隆了 例如: HTML部分 <div></div> JavaScript部分 $("div").on('click', function() {//执行操作}) //clone处理一 $("div").clone() //只克隆了结构,事件丢失 //clone处理二 $("div").clone(true) //结构、事件与数据都克隆 使用上就是这样简单,使用克隆的我们需要额外知道的细节: clone()方法时,在将它插入到文档之前,我们可以修改克隆后的元素或者元素内容,如右边代码我 $(this).clone().css('color','red') 增加了一个颜色 通过传递true,将所有绑定在原始元素上的事件处理函数复制到克隆元素上 clone()方法是jQuery扩展的,只能处理通过jQuery绑定的事件与数据 元素数据(data)内对象和数组不会被复制

js学习总结----DOM获取元素的方法(8个)

送分小仙女□ 提交于 2020-03-23 12:11:33
DOM:document object model 文档对象模型 DOM就是描述整个html页面中节点关系的图谱,可以如下图理解 在DOM中,提供了很多的获取元素的方法和之间关系的属性以及操作这些元素的方法。 1、获取页面中元素的方法   1)、 document.getElementById('元素的ID') 在整个文档中,通过元素的ID获取到这个元素对象(获取的是一个元素)     注意:如果页面中的id重复了,那么这个方法默认只获得第一个元素       在ie6、7中,会把表单元素(input)的name属性值当做ID来使用       在ie6、7中,不区分ID的大小写       项目实战注意:不要让表单元素的name和其他元素的id重复,不要用id的大小写来区分我们的不同元素       如果没有获取到,返回的 结果为null       我们可以直接的用元素的id来代表当前元素对象(不推荐)   2)、通过元素的标签名,来获取一组元素(有几个获取几个)      document.getElementsByTagName('元素的标签名') 在整个文档中,通过元素的标签名获取一组元素。获取的是一个对象数据类型结果,并且是一个类数组(以数字作为索引,索引从0开始,逐级递增,索引代表的是当前对应的某一个元素,有一个叫做length的属性代表获取的个数)