Document树的解析方法
一、本次总结用到的xml文本
1、 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- 引进dtd文件的标签 --><!-- <!DOCTYPE 书架 SYSTEM "book.dtd"> -->
<书架>
<书 ISBN="a" 出版社="人民出版社">
<书名>三国演义</书名>
<作者>罗贯中</作者>
<批发价>500¥</批发价>
<售价>100$</售价>
</书>
<书 ISBN="b" 出版社="人民出版社">
<书名>西游记</书名>
<作者>吴承恩</作者>
<售价>55¥</售价>
</书>
</书架>
二、利用jaxp进行DOM的解析方法
1、首先获得解析工厂DOcumentBuilderFactory
javax.xml.parsers 类
**DocumentBuilderFactory:定义工厂API,使应用程序能够从xml文档获取生成DOM对象的解析器。
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
**newInstance()方法:获取DocumentBuilderFactory的新实类。此static方法创建一个新的工厂实类。
2、得到解析器DocumentBuilder
类 DocumentBuilder
**定义API,使其从xml文档中DOM文档实类。应用程序员可以从xml获取一个Document
DocumentBuilder builder = factory.newDocumentBuilder();
**newDocumentBuilder:使用当前配置的参数创建一个新的DocumentBuilder实类。
3、解析制定的xml文档。得到代表内存的Dom树的Document对象
Document document = builder.parse("src/book.xml");
**builder.parse()方法:将给定输入源的内容解析为一个xml文档。并返回一个新的DOM document对象
三、得到某个具体节点的内容:列如:打印第二本书的作者
1、根据标签的内容获取所有的作者名称
NodeList nodelist=document.getElementsBytagName()
NodeList:接口提供对节点的有序集合的抽象
2、按照索引获取第二个作者元素
Node node=nodelist.item(1);
3、打印该元素的文本
String text=node.getTextContent();
System.out.println(text);
四、遍历所有的元素节点:打印元素的节点名称
1、判断当前节点是否为一个元素节点
short nd=node.getNodeType();
if(nd==Node.ELEMENT_NODE){
如果是:打印元素节点的名称
system.out.println(node.getNodeName());
}
如果不是找到他们的孩子节点
NodeList nodelist=node.getChildNodes();
int length=nodelist.getLength();//获取孩子节点的长度
for(int 1=0;i<length;i++){
//遍历孩子节点进行递归
Node n=nodelist.item(i);
test2(n);
}
五、修改元素节点的主题内容
1、列如:找到第一本书的售价
NodeList nodelist = docuement.getElementsByTagName("售价");
2、设置其主题内容
Node no=nodelist.item(0);//得到他的节点
no.setTextContent("100$");//设置他的主题内容
3、把内存中的document树写回到xml中
TransformerFactory factory = TransformerTactory.newInstance();
Transformer tr = factory.newTransformer();
tr.transformer(new DOMSource(doument),new StreamResult("src/book.xml"));
六、向指定元素节点中增加子元素节点
1、创建一个新元素并设置其内容
Element element = Element.createElement("内部价");
设置他的文本内容
element.setTexstContent("300$");
2、找到第一本书
NodeList nodelist = document.getElementsByTagName("书");
Node first =nodelist.item(0);
3、把新节点挂到第一本书上
first.appendChild(element)
4、把内存中的document树写会到xml中
TransformerFactory factory = TransformerFactory.newInstace();
Transformer tr=factory.newTransformer();
tr.transformer(new DOMSource(document),new StreamResult("src/book.xml"));
七、向指定的元素节点上增加同级元素节点:列如:在第一本书的售价前面添加批发价
1、创建并设置其主题内容
Element element = documcnet.createElement("批发价");
element.setTextContent("500$");
2、找到第一本书的售价
NodeList nodelist = document.getElementsByTagName("售价");
Node node=nodelist.item(0);
3、在售价的前面添加新建的元素:
***增加子节点,一定要使用父元素进行
node.getParentNode().insertBefore(element,node);
4、把内存中的document树写回到xml中
TransformerFactory factory = TransformerFactory.newInstance();
Transformer tr = factory.newTransformer()
tr.transformer(new DOMSource(document),new StreamResult("src/book.xml"));
八、删除指定元素的节点
1、删除子节点需要父节点进行删除
列如:找到内部价进行删除
NodeList nodelist = document.getElementsByTagName("内部价");
Node node = nodelist.item(0);
node.getPraentNode().removeChhild(n);
2、把内存的document树写回到xml中
TransformerFactory factory=TransformerFactory.newInstance();
Transformer tr=factory.Transformer();
tr.transformer(new DOMSource(document),new StreamResult("src/book.xml"));
九、操作xml元素属性:打印第一本书的出版社
1、首先得到第一本
Node node = document.getElementsByTagName("书").item(0);
2、打印指定属性的值
Element e = (Element)n;
system.out.println(e.getAttribute("出版社"));
Document树的解析方法的更多相关文章
- XML解析之DOM详解及与SAX解析方法的比较
XML解析(DOM) XML文件解析方法介绍 我们所用到的NSXMLParser是采用SAX方法解析 SAX(Simple API for XML) 只能读,不能修改,只能顺序访问,适合解析大型XML ...
- 八、Android学习第七天——XML文件解析方法(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...
- XML的四种解析方法
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6646572.html XML文档以层级标签的形式来组织数据,多用于配置文件.存储静态数据.交换数据. ...
- XML 的解析方法
四种XML解析方法: (1)Dom生成和解析XML文档 *解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构. * 优点:整个文档树在内存中,便 ...
- document的属性与方法小结
document节点是文档的根节点,每张网页都有自己的document节点.属性:1:document.doctype----它是一个对象,包含了当前文档类型 (Document Type Decla ...
- Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python
Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python 1.1. Sql语法树 ast 如下图锁死1 2. SQL语句解析的思路和过程3 ...
- C#使用表达式树动态调用方法并实现99乘法表
我们在使用C#编程的时候,经常使用反射来动态调用方法,但有时候需要动态的生成方法,下面介绍使用表达式树的方式来自动生成方法,并调用. 首先需要说明什么是表达式,熟悉Linq的程序猿都用过类似于下面的代 ...
- linux设备驱动程序-i2c(2)-adapter和设备树的解析
linux设备驱动程序-i2c(2)-adapter和设备树的解析 (注: 基于beagle bone green开发板,linux4.14内核版本) 在本系列linux内核i2c框架的前两篇,分别讲 ...
- 逗号分割符--字段中含逗号等情况的解析方法Java实现
最近在处理文本字符串时,没一行数据都是按照逗号分割的,每个字段值一般情况是带有双引号的,但是有的字段值里面还包含逗号,甚至有的字段就没有双引号,这个分割起来就有点麻烦了 下面说一下我解决方法,如果谁有 ...
随机推荐
- 5、jvm内存回收——算法
判定垃圾方法: 1.引用计数法:相互循环应用解决不了 2.根搜索算法: 垃圾搜集算法 1.标记--清除算法 2.复制算法 3.标记--整理算法 4.分代算法
- C语言中内存对齐
今天一考研同学问我一个问题,一个结构体有一个int类型成员和一个char类型成员,问我这个结构体类型占多少个字节,我直接编个程序给他看结果.这个结构体占八个字节,咦,当时我蛮纳闷的,一个int类型四个 ...
- 查询oracle版本信息
select * from v$version;select * from v$instance;select * from nls_database_parameters;select * from ...
- GridView不能添加头布局,并且scrollView与GridView冲突导致一些页面无法融合
此贴为标记贴 方便下次使用 在项目需求中原本是用ScrollView来进行整个页面的滑动,ScrollView里面包含的有图片轮播,文字轮播,与2列GridView的item 问题 使用原生的Grid ...
- Android万能使用WebServices(不用引入外部包)
直接上代码 WebServicesLib.java package com.example.testwebservices; import java.io.InputStream; import ja ...
- Python学习路程day20
本节内容: 项目:开发一个简单的BBS论坛 需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传 ...
- 使用TypeScript开发
学习过一段时间CoffeeScript,然后再学习TypeScript,最后还是决定使用TypeScript开发. CofeeScript主要是给js添加一些语法糖,编写代码要快捷的多,少量的代码开发 ...
- IDEA安装配置(SVN)
IntelliJ IDEA 14 注册码 Win7系统上配置使用Intellij Idea 13的SVN插件 IntelliJ 设置JDK http://blog.sina.com.cn/s/blog ...
- visualssh 是一个可视化的ssh客户端
这两个周末写了visualssh,一个可视化的ssh客户端.里面集成了putty的功能,通过ssh协议与Linux server通讯. 以后可以针对不同的应用编写相关插件,便于管理Linux服务器上的 ...
- Xcode下的批量编辑
说明:目前为止我找到三种查找与替换功能,如果有更多的方式,请在下面留言 第一种:我们常用的查找以及查找与替换功能 在Windows下,使用Ctrl+f 快捷键查找.用Ctrl+h来进行查找与替换功能. ...