`
Sunflower-13
  • 浏览: 73278 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
社区版块
存档分类
最新评论

xml解析——增删改查操作后将其修改结果保存

阅读更多
对xml文档进行增删改查操作后将其修改结果保存

一、可扩展标记语言xml:Extensible Markup Language
   1、XML的作用:1)统一数据传输的格式。2)做小型数据库[文件型数据库]。3)做配置文件  .ini   .propertity  .xml  .cfg
   2、XML文件的基本格式:
     标签:分为双标签和单标签,双标签的开头和结尾标签名必须一致,大小写一样,/ 开头的是结尾标签,单标签必须在 > 前加上 / 来结尾,单标签中不能放文本。
     属性:在开始标签中定义一些名值对,值一定是字符串
   3、XML文件的基本构成:
     1)在第一行是XML声明    <?xml version="1.0" encoding="UTF-8"  ?>
     2)必须且只能有一对根标签
     3)标签可以一层一层嵌

二、写一个简单的xml文档stus.xml然后用Dom进行解析。
    DOM : Document Object Model 文档对象模型
    DOM解析的基本思路:将整个XML文件一次性读入内存,将整个XML看做一棵文档树,XML中的每一个标签,属性,文本都看做是树上的一个结点,然后可以对结点进行增删改查的操作。
   已经编辑好的stus.xml文档
<?xml version="1.0" encoding="UTF-8"?>
<stus Class="1401" >
	<stu num="01">
		<name>张三</name>
		<age>19</age>
		<sex>男</sex>
	</stu>
	<stu  num="02">
		<name>李四</name>
		<age>20</age>
		<sex>女</sex>
	</stu>
	<stu  num="03">
		<name>王五</name>
		<age>21</age>
		<sex>男</sex>
	</stu>
</stus>


三、开始解析
    创建解析工厂
// 得到解析工厂对象
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		// 生产一个解析器对象
		DocumentBuilder builder = factory.newDocumentBuilder();
		// 开始解析xml文件,得到的解析结果是一个Document对象,Document对象叫做文档树对象
		Document dom = builder.parse("stus.xml");

    1、增加节点
    基本思路:首先创建一个新的元素节点,将元素节点追加到根节点后面,设置其节点属性。创建标签,设置标签文本内容,最后将新标签添加到新的元素节点中。
代码:
// 创建一个新的元素节点
		Element stu = dom.createElement("stu");
		// 将元素节点追加到根节点后面
		root.appendChild(stu);
		// 设置节点属性
		stu.setAttribute("num", "04");
		// 创建标签
		Element name = dom.createElement("name");
		Element age = dom.createElement("age");
		Element sex = dom.createElement("sex");
		// 设置标签文本内容
		name.setTextContent("赵六");
		age.setTextContent("19");
		sex.setTextContent("女");
		// 把标签添加到新的元素节点stu中
		stu.appendChild(name);
		stu.appendChild(age);
		stu.appendChild(sex);

    2、删除节点
基本思路:获得要删除的节点,然后得到节点的属性值,与要删除的节点的属性值进行比较,如果该属性值对应的节点存在则移除该节点。
代码:
// 获得根节点
		Element root = (Element) dom.getFirstChild();
		// 获得所有stu节点
		NodeList list = dom.getElementsByTagName("stu");
		for (int i = 0; i < list.getLength(); i++) {
			Node node = list.item(i);
			if (node instanceof Element) {
				Element e = (Element) node;
				// 得到节点的属性值,与要删除的结点的属性值进行比较,然后移除该属性值对应的结点
				String num = e.getAttribute("num");
				if (num.equals("02")) {
					root.removeChild(e);
					break;
				}
			}
		}


    3、修改节点
基本思路:获得要修改的节点,修改其属性值,然后获得该节点下的标签,修改标签中的文本内容。
代码:

// 修改节点属性
		for (int j = 0; j < list.getLength(); j++) {
			Node no = list.item(j);
			if (no instanceof Element) {
				Element el = (Element) no;
				String n = el.getAttribute("num");
				if (n.contains("01")) {
					el.setAttribute("num", "05");
					// 修改标签值
					NodeList li = el.getChildNodes();
					for (int x = 0; x < li.getLength(); x++) {
						Node d = li.item(x);
						if (d instanceof Element) {
							Element ee = (Element) d;
							String noN = ee.getNodeName();
							if (noN.equals("name")) {
								ee.setTextContent("小白");
							} else if (noN.equals("age")) {
								ee.setTextContent("11");
							} else if (noN.equals("sex")) {
								ee.setTextContent("男");
							}
						}
					}
				}


4、查找节点
基本思路:获得所有的节点,用 需要查找的结点的属性值与所有节点进行比较,如果该节点存在,就打印该节点的属性值及其节点下标签的内容。
代码:
		for (int j = 0; j < list.getLength(); j++) {
			Node no = list.item(j);
			if (no instanceof Element) {
				Element el = (Element) no;
				String n = el.getAttribute("num");
				//查找节点,显示其属性值及标签内容
				if(n.equals("03")){
					System.out.println(no.getNodeName()+"\t"+n+no.getTextContent());
				}
			}
		}



4、保存修改后的xml文档
基本思路:先将内存中的Document对象写到xml文件中,然后将整个Document对象作为要写入xml文件的数据源,最后将数据源写入目标文件。
代码:
// 将内存中的Document对象写到xml文件中
		TransformerFactory tf = TransformerFactory.newInstance();
		Transformer former = tf.newTransformer();
		former.setParameter("version", "1.0");
		former.setParameter("encoding", "GBK");
		// 将整个Document对象作为要写入xml文件的数据源
		DOMSource xmlSource = new DOMSource(dom);
		// 要写入的目标文件
		StreamResult outputTarget = new 
				StreamResult(new File("F:\\stus2.xml"));
		former.transform(xmlSource, outputTarget);

3
1
分享到:
评论
3 楼 Sun_TW 2016-10-11  
     
2 楼 Sunflower-13 2016-10-01  
谢谢你Sun_TW
1 楼 Sun_TW 2016-09-29  
讲得太好了!!!

相关推荐

    Xml_Factory.zip_factory_sax_xml的增删改查

    本主题将深入探讨四种不同的XML解析方法——DOM、JDOM、SAX和DOM4J,并讲解如何利用这些方法实现XML文件的增、删、改、查操作。 1. DOM(Document Object Model) DOM是W3C标准,它提供了一种结构化的表示XML文档的...

    jqgrid+struts2实现的增删改查

    在本项目中,jqGrid 与 Struts2 结合,实现了Web应用中的核心功能——增删改查。以下是关键步骤: 1. **配置 Struts2**:首先,需要在项目的 `struts.xml` 配置文件中设置Action类及其对应的URL映射,以及指定使用...

    SpringMVC+HIbernate登录程序并进行增删改查

    SpringMVC+Hibernate登录程序并进行增删改查是一个经典的Web开发示例,它整合了两个重要的Java技术框架——SpringMVC和Hibernate,用于构建基于Java的动态网站应用。SpringMVC是Spring框架的一部分,主要负责处理...

    Android安卓期末大作业 新闻app 实现注册登录增删改查功能

    本项目是一个针对Android平台的新闻应用,它涵盖了Android开发中的基础功能和核心知识点,包括用户注册、登录以及新闻数据的增删改查操作。这个期末大作业旨在帮助学生掌握Android应用开发的基本技能,提升实际项目...

    ssm框架搭建——实现增删查改用户信息

    这个项目"ssm框架搭建——实现增删查改用户信息"旨在教你如何利用这些框架搭建一个基础的用户管理系统,具备基本的CRUD(创建、读取、更新、删除)功能。 首先,我们需要安装并配置好相关的开发环境。这里提到的是...

    安楠大叔——Struts2简化版增删改查,初学者必备

    通过"安楠大叔——Struts2增删改查"项目,你可以实践以下操作: - 创建基本的Action类,实现CRUD操作。 - 配置struts.xml文件,定义Action和结果。 - 使用Struts2的拦截器实现登录验证、日志记录等功能。 - 设计和...

    基于springMVC+spring+mybatis+mysql框架的增删改查demo

    这个基于SSM+MySQL的增删改查(CRUD)示例提供了对Web应用基础功能的实践演示。 SpringMVC作为Spring框架的一个模块,专门用于处理Web请求。它负责模型-视图-控制器(MVC)架构中的控制器部分,接收HTTP请求,解析...

    Hibernate Struts增删改查

    **标题解析:**“Hibernate Struts增删改查”这个标题揭示了本次讨论的主题,即如何结合Hibernate ORM框架和Struts MVC框架来实现一个Web应用中的基本数据操作——增(Add)、删(Delete)、改(Update)和查(Query...

    Servlet+easyui例子,实现了可编辑表格,增删改查等操作;包含了数据库建库脚本

    在这个"Servlet+Easyui例子"中,开发者通过这两者结合,实现了功能完备的数据管理界面,包括可编辑表格及增删改查操作。以下是对这个示例项目中的关键知识点的详细解释: 1. **Servlet**:Servlet是Java Web应用的...

    一个Struts2+Ext实现增删改查的实例

    在实现增删改查功能时,通常会使用ExtJS的Grid组件来显示数据列表,Form组件来进行数据的添加和编辑,而Store负责数据的加载、保存和同步。 在这个"StudentCRUD"实例中,我们可以预期以下几个关键部分: 1. **模型...

    xml入门项目——通讯录系统

    2、实现通讯录中联系人的增删改查功能,联系人数据保存在xml文档中。系统xml文档通过dom4j技术创建和解析。 3、涉及JavaSE中的集合、泛型、接口文件及其实现类的应用等。 4、涉及junit测试方法的使用

    spring+struts2+mybatis框架实现单表增删改查、条件查询和分页、文件上传

    这个应用的核心功能包括对单个数据表进行基本的增删改查(CRUD)操作,实现条件查询以及分页展示,并且支持文件上传功能。以下是对这些知识点的详细说明: 1. **Spring框架**:Spring是Java企业级应用开发的基石,...

    NHibernate+Extjs实现的增删改查

    **标题解析:** "NHibernate+Extjs实现的增删改查" 这个标题指出,这个项目是基于两个核心技术——NHibernate(一个.NET平台下的对象关系映射框架)和ExtJS(一个JavaScript的前端框架),来实现数据库操作的基础...

    安卓Android源码——安卓Android系统日历日程操作.rar

    本文将深入探讨安卓Android系统日历日程的操作,基于提供的"安卓Android源码——安卓Android系统日历日程操作.rar"资源,我们将分析如何在Android应用程序中实现对日历的增删改查功能。 首先,Android提供了`...

    xml 的应用方法

    在本文中,我们将深入探讨XML在学生成绩管理系统中的应用,包括增、删、改、查四大核心功能的实现。 一、XML的基础概念 XML是一种自定义标记语言,它允许我们定义自己的元素标签,以结构化的方式组织数据。每个XML...

    ASP,NET源码——[新闻文章]Asp.net简单XML新闻发布系统.zip

    这种设计的优点在于无需复杂的数据库操作,只需对XML文件进行读写即可完成新闻的增删改查功能。 首先,系统的核心组件包括: 1. **XML数据结构**:XML文件定义了新闻的结构,每个新闻项通常包含标题(Title)、...

    Android综合案例——RSS阅读器实源代码+讲解

    - 使用`AsyncTask`或`LiveData`来处理网络请求和XML解析,避免阻塞主线程。 - `LiveData`结合`ViewModel`,可实现数据的实时更新和生命周期管理。 7. **UI交互**: - 当用户点击列表项时,启动新的Activity显示...

    springboot.7z

    《SpringBoot前端交互式实现增删改查源码解析》 SpringBoot作为Java开发领域的一颗璀璨明星,因其简化配置、快速启动以及丰富的生态而深受开发者喜爱。在本教学源码中,我们将深入探讨如何利用SpringBoot实现前端...

    如何在edit保存修改的值

    使用Room,你需要定义一个实体类,包含EditText值的字段,然后创建一个DAO(数据访问对象)来处理增删改查操作。 5. **ViewModel和LiveData**:如果你的应用遵循MVVM(Model-View-ViewModel)架构,那么可以使用...

    题库考试系统.rar

    本文将深入探讨XML在题库考试系统中的应用,以及如何通过XML进行题库的增删改查操作。 一、XML概述 XML是一种标记语言,设计目标是传输和存储数据,而非显示数据。与HTML相比,XML更注重数据的结构化表示,允许用户...

Global site tag (gtag.js) - Google Analytics