Java中有多种方式操作XML文件,目前讲一讲以SUN公司提供的DocumentBuilderFactory工厂类对象操作XML。

  使用XML基本操作就是需要CRUD(增删改查),那么首先通过一个查询展示方法来说明JAXP的使用。

     public static void run1() throws Exception{
//获取解析器工厂类对象(DocumentBuilderFactory不能直接new,需要调用newInstance()方法创建实例对象)
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//获取解析器对象(需要有异常捕获 throws Exception)
DocumentBuilder builder = factory.newDocumentBuilder();
//获取XML文档路径,返回document对象(Document有三个包,一定要选org.w3c的,否则报错)
Document document = builder.parse("src/Demo.xml");
//获取元素对象集合,返回NodeList对象
NodeList nodeList = document.getElementsByTagName("name");
//遍历获得指定节点下的数据NodeList有两个方法,一个getLength()获得当前集合下的元素个数,一个获取指定元素item
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
//得到元素下的内容/文本使用getTextContent()
System.out.println(node.getTextContent());
}
}

  如果想要插入一个节点元素,使用下列代码(需要上面代码获取到的document 对象;并且,插入的节点元素是插入到document对象中,并没有直接写入xml文件,如果要写入文件还需要回写类支持,稍后会说明)

         //通过document对象创建一个元素节点lala
org.w3c.dom.Element element = document.createElement("lala");
//设置元素节点的内容,
ele.setTextContent("中间是内容");
//把创建的节点加入文档
document.appendChild(ele);

  如果想要删除某一个元素节点,使用下列代码:

         //---------------------删除----------------
//获得节点的集合
NodeList nodelist = document.getElementsByTagName("add");
//选取目标节点
Node node = nodelist.item(0); //获取要删除节点的父节点(必须为父节点)!!!!!!
Node parNode = node.getParentNode();
//通过父节点removeChild删除指定的节点
parNode.removeChild(node);

  知道上述增删查方法了以后,更改某个节点内容相信就更容易了,无非是获得指定的节点,通过setTextContent来更改节点中的文本内容。而对于已经更改了内容的xml对象还是存在内存中,并没有真正体现在文件中,那么怎么重写回xml文件呢?

  如果需要更改xml写回xml文件需要用到TransformerFactory回写类,代码如下:

         //创建回写类的工厂类对象
TransformerFactory factory1 =TransformerFactory.newInstance();
//创建回写类
Transformer transform = factory1.newTransformer();
//调用回写类的回写方法,回写XML(注意需要的两个参数,均需new new DOMSource(document对象),new StreamResult("xml路径"))
transform.transform(new DOMSource(document),new StreamResult(""));

  这样,通过以上的方代码就可以把对xml做的操作写回到xml文件中;对于获取xml的document对象和写回类我们发现在很多地方都重复使用,那么久可以把它们封装为一个独立的方法调用,封装后如下(仅用于学习理解,不适用与实际开发):

public class JAXPDemo {
/**
* 通过路径获得xml的Document对象
* @param path 路径
* @return
*/
public static Document GetXMLDocument(String path) throws Exception
{
//获取解析器工厂类对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//获取解析器对象
DocumentBuilder builder = factory.newDocumentBuilder();
//加载路径
Document document = builder.parse(path);
return document;
} /**
* 回写方法
* @param document document对象
* @param path 指定路径
* @return 成功ok 失败error
*/
public static Boolean WriteXmlFile(Document document,String path)
{
//获取重写工厂类TransformerFactory对象
TransformerFactory factory = TransformerFactory.newInstance();
Transformer former;//创建回写类
try {
former = factory.newTransformer();
//回写
former.transform(new DOMSource(document), new StreamResult(path));
return true;//成功
} catch ( Exception e) {
return false;//失败
}
}
}

以上就是基本的JAXP的使用方法

JAVA中通过Jaxp操作XML文件基础的更多相关文章

  1. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

  2. java中四种操作xml方式的比较

    1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息. ...

  3. JAVA中使用DOM解析XML文件

    XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...

  4. java中利用dom4j解析XML文件

    官网下载Dom4j地址:https://dom4j.github.io/ 注意:使用Dom4j开发,需下载dom4j相应的jar文件 题目:后台利用dom4j解析student.xml文件,并返回Li ...

  5. Java中实现SAX解析xml文件到MySQL数据库

    大致步骤: 1.Java bean 2.DBHelper.java 3.重写DefaultHandler中的方法:MyHander.java 4.循环写数据库:SAXParserDemo.java ① ...

  6. Java中读取 .properties 和 .xml 文件

    配置文件内容获取 总结内容 1. Java中为什么要使用配置文件 2. Java中常用的配置文件类型有哪些以及它们的特点 Properties配置文件 XML配置文件 总结 总结内容 1. Java中 ...

  7. C#操作xml文件:使用XmlDocument 实现读取和写入

    XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内 ...

  8. Java操作XML文件 dom4j 篇

    在项目中,我们很多都用到了xml文件,无论是参数配置还是与其它系统的数据交互.今天就来讲一下Java 中使用dom4j来操作XML文件. 我们需要引入的包: //文件包 import java.io. ...

  9. C#基础知识---Linq操作XML文件

    概述 Linq也就是Language Integrated Query的缩写,即语言集成查询,是微软在.Net 3.5中提出的一项新技术. Linq主要包含4个组件---Linq to Objects ...

随机推荐

  1. Feign源码解析系列-最佳实践

    前几篇准备写完feign的源码,这篇直接给出Feign的最佳实践,考虑到目前网上还没有一个比较好的实践解释,对于新使用spring cloud的同学会对微服务之间的依赖产生一些迷惑,也会走一些弯路.这 ...

  2. Java基于opencv—矫正图像

    更多的时候,我们得到的图像不可能是正的,多少都会有一定的倾斜,就比如下面的 我们要做的就是把它们变成下面这样的 我们采用的是寻找轮廓的思路,来矫正图片:只要有明显的轮廓都可以采用这种思路 具体思路: ...

  3. Vue基础之内部指令(上)

    v-if.v-else-if.v-else以及v-show 条件指令v-if.v-else-if.v-else 类似于JavaScript里的if.else-if.else,这三个指令根据表达式的值对 ...

  4. vue + BMap实现常用地图

    实现功能: 缩放 自定义icon maker 多个覆盖点的点击事件 获取两点的距离 信息窗口的点击事件 <template> <div id="allmap" r ...

  5. Spring Boot + JPA 因为 javassist 包出现 NullPointerException 问题的解决

    Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.ent ...

  6. 批量镜像locator(比如表情模板)

    #外挂   镜像loc     前缀  lf  镜像给   rt   选中其中一个会镜像另一个 myPrefix='lf_'myMdf='rt_' myselectLoc=mc.ls(sl=1)for ...

  7. 机器学习基础一(TP,TN,FP,FN等)

    TP:预测为正向(P),实际上预测正确(T),即判断为正向的正确率 TN:预测为负向(N),实际上预测正确(T),即判断为负向的正确率 FP:预测为正向(P),实际上预测错误(F),误报率,即把负向判 ...

  8. Mac OS环境下DOSBox汇编环境的搭建

    平台: mac 工具: DOSBox(点击下载DOSBox官网) debug.edit.link.masm等等(点击下载masm汇编开发工具,提取码: skc8) 步骤: 1 .安装DOSBox: 解 ...

  9. Java(全局变量-静态变量-位运算符)

    全局变量是默认赋值的:而局部变量是没有默认赋值的(需要赋值才能使用)静态变量只能被静态方法使用 位运算右移,相当于做除法,2的n次幂00001000操作的位移数相当于是偏移量从右向左数n位,从第n+1 ...

  10. java web(二): servlet的简单使用和介绍

    前言:通过编写一个servlet类,向浏览器发送hello world来阐述servlet. 一:创建动态web项目 1. 首先切换到javaEE视图. 在ecplise左边即项目管理器哪里右键点击新 ...