xml解析-增删改查操作后将其修改结果保存的方法-创新互联-成都快上网建站

xml解析-增删改查操作后将其修改结果保存的方法-创新互联

这篇文章给大家分享的是有关xml解析-增删改查操作后将其修改结果保存的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

专注于为中小企业提供做网站、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业旌德免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

一、可扩展标记语言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文档



	
		张三
		19
		
	
	
		李四
		20
		
	
	
		王五
		21
		
	

三、开始解析
   创建解析工厂

// 得到解析工厂对象  
        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解析-增删改查操作后将其修改结果保存的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!


当前名称:xml解析-增删改查操作后将其修改结果保存的方法-创新互联
本文地址:http://kswjz.com/article/shcdp.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流