已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
黑马程序员 JavaEE笔记讲师:王昭珽 整理 :温静黑马程序员 JavaEE笔记day01 XML一、XML概述1、XML是指可扩展标记语言(extensible Markup Language)2、它被设计的宗旨是用于表示数据的。3、遵循的是W3C组织于2000年发布的XML1.0规范4、XML在企业开发中的主要应用场景:配置文件二、XML的语法1、声明: /必须出现在第一行2、XML文档必须且只能有一个根元素3、XML文件中不会忽略空格、回车、制表符4、CDATA区 Character Data作用:只要被此标签包围的文本都当做普通文本语法:三、XML约束格式良好的XML:遵守XML语法的有效的XML:遵守约束的4、 DTD约束DTD(Document Type Definition):文档类型定义注:DTD文件必须使用UTF-8编码进行保存如何引入DTD:dtd文件在本地:dtd文件在网上:music.dtdmusic.xml我的歌声里曲婉婷3.00江南StylePsy5.005、 Schema约束XML Schema 文件自身就是一个XML文件,但它的扩展名通常为.xsd。一个XML Schema文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档。和XML文件一样,一个XML Schema文档也必须有一个根结点,但这个根结点的名称为schema。编写了一个XML Schema约束文档后,通常需要把这个文件中声明的元素绑定到一个地址上,在XML Schema技术中有一个专业术语来描述这个过程,即把XML Schema文档声明的元素绑定到一个名称空间上,以后XML文件就可以通过这个URI(即名称空间)来告诉解析引擎,xml文档中编写的元素来自哪里,被谁约束六、XML数据解析定义XML时的约束形式:DTDSchema解析XML的方式:DOM(Document Object Model)解析优点 : W3C推出的模型,非常适合增删改查(CRUD)缺点 : 必须把XML文件全部读入内存才可以操作SAX(Simple API for XML)解析优点 :在读取文档的时候,即对文档进行处理,而不必等到整个文档装载完才对文档进行操作缺点 :只能进行查询解析时用到的开发包:DOM4J开源组织推出的解析开发包。最好的,都在用JAXP(Java API for XML Processing)SUN公司推出的解析标准实现org.w3c.dom:提供DOM方式解析XML的标准接口org.xml.sax:提供SAX方式解析XML的标准接口javax.xml:提供了解析XML文档的类JDom是开源组织推出的解析开发包7、 JAXP之DOM解析package com.itheima.jaxp.dom;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;/*一、必练习:DOM4J基本操作1、得到某个具体的节点内容2、遍历所有元素节点3、修改某个元素节点的主体内容4、向指定元素节点中增加子元素节点5、向指定元素节点上增加同级元素节点6、删除指定元素节点7、操作XML文件属性*/public class DomTest public static void main(String args) throws Exception /得到DOM解析器DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();DocumentBuilder builder = dbf.newDocumentBuilder();/指定要解析的XML文件Document document = builder.parse(src/music.xml);/testOne(document);/testTwo(document);/testThree(document);/testFour(document);/testFive(document);/testSix(document);testSeven(document);/* * 1、得到某个具体的节点内容(第二首歌的歌名) * throws Exception */public static void testOne(Document document) throws ExceptionNodeList nl = document.getElementsByTagName(name);/不分层级关系Node node = nl.item(1);/得到第2首歌String content = node.getTextContent();/得到节点的主体内容System.out.println(content);/* * 2、遍历所有元素节点 * throws Exception */public static void testTwo(Node node) throws Exception/判断node是不是Element类型的,如果是打印名称if(node.getNodeType()=Node.ELEMENT_NODE)System.out.println(node.getNodeName();/得到它的孩子们,递归NodeList nl = node.getChildNodes();for(int i=0;inl.getLength();i+)Node n = nl.item(i);testTwo(n);/* * 3、修改某个元素节点的主体内容(将第二首歌的价格改为3.00) * throws Exception */public static void testThree(Document document) throws ExceptionNodeList nl = document.getElementsByTagName(price);Node node = nl.item(1);node.setTextContent(3.00);/把内存中的数据变化写回到xml文档中TransformerFactory tf = TransformerFactory.newInstance();Transformer ts = tf.newTransformer();ts.transform(new DOMSource(document), new StreamResult(src/music.xml);/* * 4、向指定元素节点中增加子元素节点(在第一首歌中添加Time元素) * throws Exception */public static void testFour(Document document) throws Exception/创建新元素标签,设置主体内容Element e = document.createElement(time);e.setTextContent(3);/得到第1首歌Node node = document.getElementsByTagName(Song).item(0);/把新元素加到第一首歌最后node.appendChild(e);/把内存中的数据变化写回到xml文档中TransformerFactory tf = TransformerFactory.newInstance();Transformer ts = tf.newTransformer();ts.transform(new DOMSource(document), new StreamResult(src/music.xml);/* * 5、向指定元素节点上增加同级元素节点(在第二首歌的price后面添加time元素) * throws Exception */public static void testFive(Document document) throws Exception/创建新元素标签,设置主体内容Element e = document.createElement(time);e.setTextContent(5+);/得到售价节点Node n = document.getElementsByTagName(price).item(1);/得到父节点:第二首歌Node bookNode = n.getParentNode();bookNode.insertBefore(e, n);/把内存中的数据变化写回到xml文档中TransformerFactory tf = TransformerFactory.newInstance();Transformer ts = tf.newTransformer();ts.transform(new DOMSource(document), new StreamResult(src/music.xml);/* * 6、删除指定元素节点(删除第一首歌的time元素) * throws Exception */public static void testSix(Document document) throws Exception/得到要删除的节点Node node = document.getElementsByTagName(time).item(0);/用它的父节点来删除自己node.getParentNode().removeChild(node);/把内存中的数据变化写回到xml文档中TransformerFactory tf = TransformerFactory.newInstance();Transformer ts = tf.newTransformer();ts.transform(new DOMSource(document), new StreamResult(src/music.xml);/* * 7、操作XML文件属性(向第一首歌添加属性 date=2012-1) * throws Exception */public static void testSeven(Document document) throws Exception/得到要添加属性的节点(最好转成元素)Node node = document.getElementsByTagName(Song).item(0);if(node.getNodeType()=Node.ELEMENT_NODE)Element e = (Element)node;e.setAttribute(date, 2012-1);/把内存中的数据变化写回到xml文档中TransformerFactory tf = TransformerFactory.newInstance();Transformer ts = tf.newTransformer();ts.transform(new DOMSource(document), new StreamResult(src/music.xml);8、 JAXP之SAX解析在使用 DOM 解析 XML 文档时,需要读取整个 XML 文档,在内存中构架代表整个 DOM 树的Doucment对象,从而再对XML文档进行操作。此种情况下,如果 XML 文档特别大,就会消耗计算机的大量内存,并且容易导致内存溢出。SAX解析允许在读取文档的时候,即对文档进行处理,而不必等到整个文档装载完才会文档进行操作。使用SAXParserFactory创建SAX解析工厂SAXParserFactory spf = SAXParserFactory.newInstance();通过SAX解析工厂得到解析器对象SAXParser sp = spf.newSAXParser();通过解析器对象得到一个XML的读取器XMLReader xmlReader = sp.getXMLReader();设置读取器的事件处理器xmlReader.setContentHandler(new BookParserHandler();解析xml文件xmlReader.parse(book.xml);九、DOM4J操作Dom4j是一个简单、灵活的开放源代码的库。Dom4j是由早期开发JDOM的人分离出来而后独立开发的。与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性。 Dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极易使用的特点。现在很多软件采用的Dom4j,例如Hibernate,包括sun公司自己的JAXM也用了D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 耳鼻喉科中耳炎患者耳道护理技巧培训
- 2025年大学《神经科学-神经科学前沿专题》考试备考试题及答案解析
- 2025年大学《金融工程-金融大数据建模》考试模拟试题及答案解析
- 2025年大学《微电子科学与工程-微电子测试技术》考试备考题库及答案解析
- 2025年大学《会计学-审计学基础》考试参考题库及答案解析
- 2025年大学《救助与打捞工程-救助打捞模拟实训与海上作业》考试备考题库及答案解析
- 精神分裂症急性期护理处理流程培训
- 2025年大学《动物医学-动物寄生虫病学》考试模拟试题及答案解析
- 眼科青光眼手术后康复护理流程
- 2025年大学《地球系统科学-地质学基础》考试备考试题及答案解析
- 蜡疗技术的应用
- 2025四川省自然资源投资集团招聘30人笔试参考题库附带答案详解
- 《组织行为学》课件-第12章 组织文化
- 2025年高纯硼酸行业研究报告及未来行业发展趋势预测
- 电机制造工作业指导书
- GJB1406A-2021产品质量保证大纲要求
- 阿里巴巴绩效管理体系实战操作手册
- 2025至2030年中国水海产品行业市场前景预测及投资方向研究报告
- 2025年雅安市中考语文试卷真题(含标准答案)
- 驾校安全生产会议培训记录
- 医学检验技术专业大学生职业生涯规划
评论
0/150
提交评论