DOM解析XML
来源:互联网 发布:windows movie marker 编辑:程序博客网 时间:2024/06/05 06:28
XML 是扩展标记语言
1、XML是一种通用的数据交换格式。它跟平台无关、语言无关。为系统集成和数据交换带来了便利。2、常见解析方案: DOM SAX
XML的编写
1. XML声明任何一个XML文档的第1行都应该是该文档的声明,其格式如下:<?xml version=”1.0” standalone=”yes/no” encoding=”UTF-8”?> 1、声明的作用是告诉浏览器或者其他处理程序:这个文档是XML文档。2、声明语句中的version表示文档遵守的XML规范的版本;standalone表示此文档是否为独立文档(文档如果包含DTD文件则不是独立文档),如果是,参数为yes;encoding表示文档所用的字符集,默认是UTF-8。3、XML声明也是一个XML处理指令。处理指令以“<?”开始,而以“?>”结束。在“<?”后的第一个单词是处理指令名,这里是xml,代表XML声明。
Document对象
(1)Document对象表示文档节点树的根,通常对XML文件的操作就是从Document开始的,Document对象提供的方法和属性可以对XML文件遍历、查询、修改等。 (2)常用属性: documentElement:返回文档的根元素节点 parsed:返回是否所有节点已被解析 (3)常用方法: getElementById(id):返回拥有带有给定值的ID属性的元素 getElementsByTagName(name):返回文档中拥有特定类型名称的所有元素列表 (4) // 得到DocumentBuilder工厂对象 DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance(); // 得到DocumentBuilder对象 DocumentBuilder dBuilder=dbFactory.newDocumentBuilder(); // 得到Document对象 Document document=dBuilder.parse(getServletContext().getRealPath( "bookstore.xml”);
Node对象
(1)Node对象是DOM的主要对象,DOM规范中有很大一部分对象都继承自Node对象。(2)常用属性: nodeName/nodeType/nodeValue ownerDocument parentNode/childNodes/firstChild/lastChild previousSibling/nextSibling(3)常用方法: hasChildNodes getChildNodes selectNodes/selectSingleNode
NodeList对象
(1)NodeList接口提供了对节点集合的抽象定义,用于表示有顺序关系的一组节点,比如某个节点的子节点序列,可通过节点列表中的节点索引号来访问列表中的节点。 一般可以使用循环结构进行遍历访问或使用item方法进行随机访问节点。(2)常用属性: Length:返回一个整数,表示某个节点列表中的节点数目。(3)常用方法: item(index):依据给出的索引值,返回所要的节点。(4) // 通过getElementsByTagName方法获得元素名为book的所有子节点 NodeList elementNodes = document.getElementsByTagName("book"); // 通过item方法取得列表中第一个节点 Node node = elementNodes.item(0); // 通过getChildNodes方法得到第一个book节点下所有的子节点 NodeList childnodes =node.getChildNodes();
Element对象
(1)Element对象表示XML文档中的某个元素,继承Node对象的全部属性和方法。(2)常用属性: tagName:可返回元素的名称。(3)常用方法: getAttribute():返回某个属性的值。 getAttributeNode():以一个Attribute对象返回一个属性节点。 getElementsByTagName():返回匹配元素节点以及它们的子节点的NodeList。(4)// 通过getElementById方法获取具有指定id属性的元素节点 Element element = document.getElementById(elementId); //通过一个Node对象转换 NodeList elementNodes = document.getElementsByTagName("book"); Element book = (Element)elementNodes.item(0); NodeList childnodes = book.getChildNodes(); for (int k = 0; k < childnodes.getLength(); k++) { Node child = childnodes.item(k); if (child.getNodeType() == Node.ELEMENT_NODE) { //通过一个Node对象转换 Element emt = (Element) child; } }
Attribute对象
(1)Attribute对象表示元素的属性,它继承了Node接口,但并没有真正实现接口上的方法,比如getFirstNode,childNodes等,调用这些方法将会返回null。(2)常用属性: name:返回属性的名称。 ownerDocument:返回所属的根元素(document对象)。 ownerElement:返回属性所附属的元素节点。 value:设置或返回属性的值。(3) // 通过getAttribute方法获取属性bookid的值 String bookId = book.getAttribute (“bookid”); //通过getAttributeNode方法获取属性节点对象 Attr attrBookId = book.getAttributeNode("bookid ");
Text对象
(1)Text对象表示元素或属性的文本内容。若元素只包含文本,则此文本包含在单个Text对象中,若元素还包含其他的标记,则将它解析到DOMText对象的同级子元素。(2)常用属性: data:设置或返回元素或属性的文本 length:返回元素或属性的文本长度(3)常用方法: substringData(start,length):从节点提取数据。(4) /通过Text对象所属元素节点的getFirstNode方法获取Text对象 Text txt = (Text)elementNode.getFirstNode(); //获取Text对象的文本 String s = txt.getData(); //通过Text对象所属元素节点的getTextContent方法直接获取Text对象的文本 String s= elementNode. getTextContent();
通过DOM读取Xml文档的内容步骤:
1.通过DocumentBulderFoctory创建Xml解释器。
2.通过解释器创建一个可以加载并生成Xml树的DocumentBuilder。
3.通过DocumentBuilder加载并生成一颗Xml树。Document对象的实例。
4.通过Document可以遍历这颗树。并读取相应节点中的内容。
读取XMl文件的方法。
1、将xml文件放在WEB-INF目录下,然后 (1)程序代码: InputStream is=getServletContext().getResourceAsStream( "/WEB-INF/xmlfile.xml" ); 方法二:将xml文件放在/WEB-INF/classes目录下或classpath的jar包中,则可以使用ClassLoader的静态方法getSystemResourceAsStream(String s)读取; (2)程序代码: String s_xmlpath="com\xml\hotspot.xml"; InputStream in=ClassLoader.getSystemResourceAsStream(s_xmlpath); (3)//文件放到web-inf目录下 web-inf/person.xml String web_inf = getServletContext().getRealPath("/WEB-INF/")+"/person.xml";2、//文件放到src目录下 src/person.xml String src_inf= getClass().getClassLoader().getResource("person.xml").getPath(); File file = new File(web_inf); Document document = db.parse(file);
阅读全文
0 0
- XML DOM---解析xml dom
- 【XML】DOM解析XML
- 解析xml dom 解析
- xml解析 Dom解析
- dom解析xml
- dom解析 xml
- dom解析xml
- 解析xml之--DOM
- Dom解析XML文档
- DOM解析XML文件
- dom解析xml
- dom解析xml
- xml文件解析-DOM
- JAVA解析XML DOM
- DOM解析XML
- JAVA解析XML DOM
- XML DOM解析
- JAVA解析XML DOM
- react数据之dispatch,reducer
- 大数处理问题
- JMeter之JMS接口测试
- 如何通过用户链接来改善你的搜索引擎优化
- 一分钟教你知道乐观锁和悲观锁的区别
- DOM解析XML
- android实现和web一样的阴影效果
- xamarin.forms 网络连接检测及网络状态判断案例
- java 中泛型
- linux makefile 速查
- 常用的testbench和matlab代码之读取和写入文本代码
- BigDecimal通过setScale设置小数位数发生ArithmeticException
- IOCP简单示例
- LoadRunner关联