xml解析-增删改查操作后将其修改结果保存的代码实例

互联网 17-3-31
一、可扩展标记语言xml:Extensible Markup Language 1、XML的作用:1)统一数据传输的格式。2)做小型数据库[文件型数据库]。3)做配置文件 .ini .propertity .xml .cfg 2、XML文件的基本格式: 标签:分为双标签和单标签,双标签的开头和结尾标签名必须一致,大小写一样,/ 开头的是结尾标签,单标签必须在 > 前加上 / 来结尾,单标签中不能放文本。 属性:在开始标签中定义一些名值对,值一定是字符串 3、XML文件的基本构成: 1)在第一行是XML声明 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);

以上就是xml解析-增删改查操作后将其修改结果保存的代码实例的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:详细介绍eclipse关闭XML验证的方法

相关资讯