前面用DOM解析XML只是对里面的数据读取出来,而DOM解析最大的优势并不是读取,而是可以方便的修改里面的元素。
接着上回的代码,在类中新建一个方法来进行XML文件的修改和增加节点操作。
DOM修改的原理是,DOM在读取XML文件时读入的是文件中所有的节点组成一个DOM树的Document文件,这个文件被读取出来之后我们用JAVA语言可以操作它,不过这样修改也仅仅是修改了JAVA中的这个对象而已,所有在我们将DOM文件修改完了之后还要进行保存工作,这样才是真正的做到了修改XML文件。
原来的XML文档:
<?xml version="1.0" encoding="utf-8"?> <student> <stu num="1111"> <name>张三丰</name> <sex>男</sex> <cla>武当</cla> </stu> <stu num="2345"> <name>小龙女</name> <sex>女</sex> <cla>古墓</cla> </stu> </student>
代码:
/** * 修改XML文件 * @throws Exception */ public static void changeXML(Document doc) throws Exception{ //------------------------修改节点中元素的内容 //找到要修改的节点名称的所有节点,得到名字相同的节点队列 NodeList nodes = doc.getElementsByTagName("name"); //在队列中选择要修改的节点 Node n = nodes.item(0); //修改该节点的文本 n.setTextContent("逗逼"); //------------------------增加节点的子元素 //找到要修改的节点名称的所有节点,得到名字相同的节点队列 NodeList nodes1 = doc.getElementsByTagName("student"); //在队列中选择要修改的节点 Node n1 = nodes1.item(0); //创建要增加的节点元素 Element nn = doc.createElement("stu"); //设置节点属性 Attr attr = doc.createAttribute("num"); attr.setValue("6666"); nn.setAttributeNode(attr); //增加新元素stu的子元素 //姓名 Element nn1 = doc.createElement("name"); nn1.setTextContent("第三个"); nn.appendChild(nn1); n1.appendChild(nn); //性别 Element nn2 = doc.createElement("sex"); nn2.setTextContent("第三个"); nn.appendChild(nn2); n1.appendChild(nn); //班级 Element nn3 = doc.createElement("cla"); nn3.setTextContent("第三个"); nn.appendChild(nn3); n1.appendChild(nn); System.out.println(doc.getElementsByTagName("stu").getLength()); //-------------------------保存到文件中 //创建一个用来转换DOM对象的工厂对象 TransformerFactory factory = TransformerFactory.newInstance(); //获得转换器对象 Transformer t = factory.newTransformer(); //定义要转换的源对象 DOMSource xml = new DOMSource(doc); //定义要转换到的目标文件 StreamResult s = new StreamResult(new File("D:\\xmlEX\\student4.xml")); //开始转换 t.transform(xml, s); }
修改后的XML文档:
<?xml version="1.0" encoding="utf-8" standalone="no"?><student> <stu num="1111"> <name>逗逼</name> <sex>男</sex> <cla>武当</cla> </stu> <stu num="2345"> <name>小龙女</name> <sex>女</sex> <cla>古墓</cla> </stu> <stu num="6666"> <name>第三个</name> <sex>第三个</sex> <cla>第三个</cla> </stu> </student>
从这次的练习得出一个发现,如果直接给一个节点添加一个子节点stu,而且该子节点stu没有其他的子节点的话,那么这个stu在XML保存操作之后,会在文件中显示成<stu/>,只有当这个节点stu有子节点的时候,才会显示成<stu></stu>的两对尖括号的形式.....
相关推荐
功能:创建XML文件的根节点 参数:[in] sName 根节点的节点名 返回:true创建成功 false创建失败 **************************************/ bool CreateRootNode(CString sName); /************************...
DOM技术解析XML,获得XML文件中根节点以及所有子节点里面的信息。
文档对象模型 节点和节点树 使用DOM加载XML文档 使用DOM访问、创建和修改节点
换句话说:XML DOM 是用于获取、更改、添加或删除 XML 元素的标准。 模块简介: 1、XMLDOMDocument类: XML对象文档 ->操作创建或读写(元素、节点、属性、注释)等 2、IXMLDOMNode类:每个元素或节点基本都会有的...
主要介绍了JAVA DOM解析XML文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
此方法解析xml时,不受xml层级的限制。文件中包含了说明文档,java类,以及所使用到的*.jar。并对代码做了注释让你一目了然……
dom4j是一种解析XML文档的开放源代码XML框架。本文介绍如何使用包含在dom4j中的解析器创建并修改XML文档。dom4j API包含一个解析XML文档的工具。本文中将使用这个解析器创建一个...DOM解析器不支持使用XPath选择节点。
dom解析xml 解析器 获取文档节点 获取属性节点 进行添加
在页面中使用dom节点解析xml文件实例
// 读取并解析XML文档 // SAXReader就是一个管道,用一个流的方式,把xml文件读出来 // // SAXReader reader = new SAXReader(); //User.hbm.xml表示你要解析的xml文档 // Document document = reader.read...
Dom4j遍历解析XMLDom4j遍历解析XML
用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM。Sun公司提供了Java API for XML Parsing(JAXP)...
这是Dom解析大xml文件的例子,它能使xml各节点,一树状菜单的形式显示在页面上。
使用DOM解析XML文件 Dom解析是将xml文件全部载入,组装成一颗dom树,然后通过节点以及节点之间的关系来解析xml文件。对于特别大的文档,解析和加载整个文档可能很慢且很耗资源 http://www.iteye.com/topic/763926
使用Jsoup库解析HTML、XML或URL链接中的DOM节点 Jsoup进行Html的Dom解析
XML节点访问的路径表达式【相对路径】和【绝对路径】的匹配原则
主要是Qt5 对XML文件的解析。 有解析,重点是增加,删除,查询,修改功能。 还是很简单的,希望对大家有帮助。
xml解析,dom4j解析,xml循环节点处理,java代码 jar包执行20190331.rar
Python3 利用dom模块解析xml文件,通过某节点文本值获取兄弟节点的文本值
掌握DOM解析器,包括创建DOM解析器的步骤;Doucument对象的结构。节点的类型,包括Node接口;Node 接口的常用方法;节点的子孙关系。各节点的实例,包括element节点 、Text节点、 Attr节点 、 DocumentType节点、 ...