XML解析之 对元素属性,节点,的增删改查

小弟初学,希望老鸟们多多指点,感激不尽。
、<?xml version="1.0" encoding="UTF-8" standalone="no"?><水果 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="TestNameSpace.xsd">
	<苹果 id="update">苹果</苹果>
	<香蕉>香蕉</香蕉>
	
	<葡萄>update group</葡萄><李子>中文</李子>
</水果>

JAVA 解析文件:

package hr.csdn.com;

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Dome3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		DocumentBuilderFactory factor=DocumentBuilderFactory.newInstance();
		try {
			DocumentBuilder builder=factor.newDocumentBuilder();
			Document doc=builder.parse(new File("src/Test.xml"));
			find(doc);//查找
			findAtt(doc);//查找属性
			creatElement(doc);//添加节点
			removeElements(doc);
			updateElements(doc);
			updateAtt(doc);//修改属性
			addAtt(doc);//添加节点属性
			remove(doc);//删除节点属性
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
private static void remove(Document doc){
	Node bana=doc.getElementsByTagName("香蕉").item(0);
	if(bana.getNodeType()==Node.ELEMENT_NODE){
		Element emelent=(Element) bana;
		emelent.removeAttribute("id");
		TransformerFactory factor=TransformerFactory.newInstance();
		try {
			Transformer former=factor.newTransformer();//创建转换工厂
			former.transform(new DOMSource(doc),new StreamResult("src/Test.xml"));
			//将内存的内容
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
private static void addAtt(Document doc){
	Node banan=doc.getElementsByTagName("香蕉").item(0);
	if(banan.getNodeType()==Node.ELEMENT_NODE){
		Element element=(Element) banan;
		element.setAttribute("id","19");
		TransformerFactory factor=TransformerFactory.newInstance();
		try {
			Transformer former=factor.newTransformer();//创建转换工厂
			former.transform(new DOMSource(doc),new StreamResult("src/Test.xml"));
			//将内存的内容
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
	private static void updateAtt(Document doc) {
		Node apple=doc.getElementsByTagName("苹果").item(0);
		if(apple.getNodeType()==Node.ELEMENT_NODE){
			Element element=(Element) apple;
			//element.getAttributeNode("id").setNodeValue("update apple");
			element.getAttributeNode("id").setValue("update");
			TransformerFactory factor=TransformerFactory.newInstance();
			try {
				Transformer former=factor.newTransformer();//创建转换工厂
				former.transform(new DOMSource(doc),new StreamResult("src/Test.xml"));
				//将内存的内容
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}

	private static void updateElements(Document doc) {
		Node group=doc.getElementsByTagName("葡萄").item(0);
		group.setTextContent("update group");
		TransformerFactory factor=TransformerFactory.newInstance();
		try {
			Transformer former=factor.newTransformer();//创建转换工厂
			former.transform(new DOMSource(doc),new StreamResult("src/Test.xml"));
			//将内存的内容
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	private static void removeElements(Document doc) {
		Node group=doc.getElementsByTagName("葡萄").item(0);
		group.getParentNode().removeChild(group);
		TransformerFactory factor=TransformerFactory.newInstance();
		try {
			Transformer former=factor.newTransformer();//创建转换工厂
			former.transform(new DOMSource(doc),new StreamResult("src/Test.xml"));
			//将内存的内容
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

	private static void creatElement(Document doc) {
		NodeList shuiguos=doc.getElementsByTagName("水果");
		Node shuiguo=shuiguos.item(0);
		Node grap=doc.createElement("葡萄");//创建葡萄标签
		Node groupValue=doc.createTextNode("group");//创建葡萄标签中的内容
		grap.appendChild(groupValue);//将内容添加到标签
		shuiguo.appendChild(grap);//将葡萄添加到水果标签中
		shuiguo.insertBefore(grap, doc.getElementsByTagName("李子").item(0));
		TransformerFactory factor=TransformerFactory.newInstance();
		try {
			Transformer former=factor.newTransformer();//创建转换工厂
			former.transform(new DOMSource(doc),new StreamResult("src/Test.xml"));
			//将内存的内容
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	private static void findAtt(Document doc) {
		NodeList nodelist=doc.getElementsByTagName("苹果");
		Node node=nodelist.item(0);
		if(node.getNodeType()==Node.ELEMENT_NODE){
			Element element=(Element)node;
			String name=element.getAttribute("id");
			System.out.println(name);
		}
		
	}

	private static void find(Document doc) {
			NodeList nodelist=doc.getElementsByTagName("水果");
			Node node=nodelist.item(0);//获取第一个水果元素
			String value=node.getTextContent();
			System.out.println(value);
			
			
		
	}

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
如果需要源码可以发送邮件到sdiwen1982@sohu.com索取 /*************************************** 功能:读取xml文件 参数:[in] xml文件路径 返回:true读取成功 false读取失败 **************************************/ bool ReadXml(CString sXmlPath /*xml文件路径*/); /*************************************** 功能:写入xml文件 参数:[in] xml文件路径 返回:true写入成功 false写入失败 **************************************/ bool WriteXml(CString sXmlPath /*xml文件路径*/); /*************************************** 功能:释放空间 参数:无 返回:无 **************************************/ void Release(); /*************************************** 功能:删除指定的节点 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteNode(); /*************************************** 功能:删除当前节点的所有子节点,当前节点删除 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAllSon(); /*************************************** 功能:根据索引删除节点 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteSonByIndex(unsigned int nIndex); /*************************************** 功能:删除节点所有属性 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAllAttr(); /*************************************** 功能:根据属性删除属性 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAttrByName(CString sName); /*************************************** 功能:根据索引删除属性 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAttrByIndex(unsigned int nIndex); /*************************************** 功能:根据属性名设置属性值 参数:[in] sName 属性名 [in] sValue 属性值 返回:true设置成功 false设置失败 **************************************/ bool SetAttrValueByName(CString sName, CString sValue); /*************************************** 功能:插入属性 参数:[in] sName 属性名 [in] sValue 属性值 返回:true插入成功 false插入失败 **************************************/ bool InsertAttr(CString sName, CString sValue); /*************************************** 功能:设置节点值 参数:[in] sValue 属性值 返回:true设置节点值成功 false设置节点值失败 **************************************/ bool SetNodeValue(CString sValue); /*************************************** 功能:插入子节点 参数:[in] sName 节点名 返回:非空表示插入节点成功,返回插入的新节点指针 空表示插入失败 **************************************/ CXMLNode * InsertNode(CString sName); /*************************************** 功能:判断是否存在子节点 参数:[in] pNode 子节点文件指针, 返回:false没有子节点 true有子节点 **************************************/ bool HasChild(MSXML2::IXMLDOMNodePtr pNode);
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值