XML编程,CURD,异常处理
来源:互联网 发布:成都纵横无人机 知乎 编辑:程序博客网 时间:2024/06/05 17:56
XML编程
增删改查CRUD
create read update delete
dom解析为对象树 节点都解析为对象
缺点:占用内存大
优点:对文档CURD容易
sax:(Simple API for XML)不是官方标准 但几乎所有XML解析器都支持
读一行解析一行
优点:占用内存小 解析速度快
缺点:只适合读取 不适合CURD
两者区别如上
开辟空间
byte b[] = new byte[1024*1024];开辟1M空间
JVM默认最高能占内存64M,超出会拋异常
Run As--Run Configurations--Arguments--VM arguments中配置 -Xmx80m即扩展空间到80M
XML解析开发包
Jaxp(sun) Jdom dom4j(最优)
在javax.xml.parsers包中,定义了几个工厂类
调用可得到xml文档的解析器,从而解析xml文档
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
2.得到dom解析器
DocumentBuilder builder = factory.newsDocumentBuilder();
3.解析xml文档,得到代表文档的document
Document document = builder.parse("xxx");//xxx为xml文档地址
以上CURD之前都要执行 获得xml的对象树
.getTextContent();//对象的内容
递归循环读取所有标签
属性将node强转为element,用element.getAttribute("key")获取value
creat: Element price = document.creatElement("xxx")//创建节点
price.setTextContent("yyy")//添加内容
Element book = document.getElementsByTagName("书").item(0);//找到第一本书
book.appendChild(price);//添加子节点到第一本书中(这里添加到最后)
[可以找参考节点实现往指定位置添加
book.insertBefore(price,指定节点)]
[添加属性
book.setAttribute("name","xxxx")name属性value值为xxxx]
Transformer tf = tffactory.newTransformer();
tf.transform(new DOMSource(document),new StreamReult(new FileOutStream("xml文档地址")));
delete: Element e = (Element)document.getElementsByTagName("xx").item(?);//得到要删除的节点
[e.getParentNode().removeChild(e);//删除e]
[e.getParentNode().getParentNode().removeChild(e.getParentNode());//删除e的父节点]
update: Element e = (Element)document.getElementsByTagName("xx").item(?);//找到节点
e.printStackTrace();
将异常作为返回值 用编译时异常
unchecked exception运行时异常,
throw new RuntimeException(e);报告给上层,随上层处不处理
增删改查CRUD
create read update delete
XML解析技术概述
dom sax
dom:(Document Object Model文档对象模型)W3C推荐dom解析为对象树 节点都解析为对象
缺点:占用内存大
优点:对文档CURD容易
sax:(Simple API for XML)不是官方标准 但几乎所有XML解析器都支持
读一行解析一行
优点:占用内存小 解析速度快
缺点:只适合读取 不适合CURD
两者区别如上
调整JVM大小(应对dom内存溢出)
开辟空间byte b[] = new byte[1024*1024];开辟1M空间
JVM默认最高能占内存64M,超出会拋异常
Run As--Run Configurations--Arguments--VM arguments中配置 -Xmx80m即扩展空间到80M
XML解析开发包
Jaxp(sun) Jdom dom4j(最优)
Jaxp是J2SE一部分
由javax.xml,org.w3c.dom,org.xml.sax包及其子包组成在javax.xml.parsers包中,定义了几个工厂类
调用可得到xml文档的解析器,从而解析xml文档
javax.xml.parsers
DocumentBuilderFactory创建DOM模式的解析器对象抽象工厂类 自带newInstance()方法来实例化
流程:1.创建工厂DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
2.得到dom解析器
DocumentBuilder builder = factory.newsDocumentBuilder();
3.解析xml文档,得到代表文档的document
Document document = builder.parse("xxx");//xxx为xml文档地址
以上CURD之前都要执行 获得xml的对象树
CRUD:
read: getElementsByTagName("tagname");//由标签名找对象.getTextContent();//对象的内容
递归循环读取所有标签
属性将node强转为element,用element.getAttribute("key")获取value
creat: Element price = document.creatElement("xxx")//创建节点
price.setTextContent("yyy")//添加内容
Element book = document.getElementsByTagName("书").item(0);//找到第一本书
book.appendChild(price);//添加子节点到第一本书中(这里添加到最后)
[可以找参考节点实现往指定位置添加
book.insertBefore(price,指定节点)]
[添加属性
book.setAttribute("name","xxxx")name属性value值为xxxx]
以上只是在内存中添加了,要经过转换到xml文档中输出(增删改都需要这一步)
TransformerFactory tffactory = TransformerFactory.newInstance();Transformer tf = tffactory.newTransformer();
tf.transform(new DOMSource(document),new StreamReult(new FileOutStream("xml文档地址")));
delete: Element e = (Element)document.getElementsByTagName("xx").item(?);//得到要删除的节点
Element book = (Element)document.getElementsByTagName("x").item(?);//得到要删除节点的爸爸
book.removeChild(e);//删除子节点[e.getParentNode().removeChild(e);//删除e]
[e.getParentNode().getParentNode().removeChild(e.getParentNode());//删除e的父节点]
update: Element e = (Element)document.getElementsByTagName("xx").item(?);//找到节点
e.setTextContent("xxx");//更改内容
异常链不能断Catch Exception e
checked exception编译时异常e.printStackTrace();
将异常作为返回值 用编译时异常
unchecked exception运行时异常,
throw new RuntimeException(e);报告给上层,随上层处不处理
阅读全文
0 0
- XML编程,CURD,异常处理
- xml编程 CURD
- hibernate-2-curd-xml
- 安全编程-异常处理
- 编程手册:异常处理
- 异常处理编程
- 编程异常处理方法
- SQL 处理数据 curd
- 【XML】DOM4J解析xml(CURD)
- python 处理 xml 异常问题
- java在xml中CURD
- Java编程中的异常处理
- Windows编程之异常处理
- socket编程中的异常处理
- C++编程->异常处理入门
- ruby编程中的异常处理
- 异步编程中的异常处理
- Java 编程思想---异常处理
- linux 安装tomcat7
- 统计字符号串“aaaabbbccccddfggh”中字母个数或统计最多字母数
- String、java.Util.Date和java.sql.Date之间的转换
- 如何去除Word页眉中的横线
- 【dp+桶】Sorting Railway Cars CodeForces
- XML编程,CURD,异常处理
- 新手篇——学习网页开发需要多长时间就能找到工作
- AngularJS用户添加,密码修改
- web.xml 配置中classpath: 与classpath*:的区别
- VUE 学习笔记 从零开始一步一步构建 VUE 单页应用(三)
- 关于消息队列的使用
- 深入分析类与对象--综合实战:简单java类
- C#回顾学习笔记十四:C#中自定义方法与调用方法
- python/java 网站记载