jaxp解析xml的增删改查操作

jaxp中常用的解析方法

/*jaxp是javase的一部分

	** jaxp解析器在jdk的javax.xml.parsers包里面
		** 四个类:分别是针对dom和sax解析使用的类
		*** dom: 
			DocumentBuilder  : 解析器类
				- 这个类是一个抽象类,不能new,
				此类的实例可以从 DocumentBuilderFactory.newDocumentBuilder() 方法获取

				- 一个方法,可以解析xml  parse("xml路径") 返回是 Document 整个文档
				- 返回的document是一个接口,父节点是Node,如果在document里面找不到想要的方法,到Node里面去找*/
				
				//在document里面方法 
				getElementsByTagName(String tagname) 
				//这个方法可以得到标签
				//返回集合 NodeList

					createElement(String tagName)
					//创建标签

					createTextNode(String data) 
					// 创建文本

					appendChild(Node newChild) 
					// 把文本添加到标签下面

					removeChild(Node oldChild) 
					// 删除节点

					getParentNode() 
					// 获取父节点

					//NodeList list
					 getLength() //得到集合的长度
					 item(int index)//下标取到具体的值
					for(int i=0;i<list.getLength();i++) {
						list.item(i)
					}

					getTextContent()
					//得到标签里面的内容
				
		//DocumentBuilderFactory: 解析器工厂
				// 这个类也是一个抽象类,不能new
		newInstance() //获取 DocumentBuilderFactory 的实例。

		/*** sax:
			SAXParser:解析器类
			SAXParserFactory: 解析器工厂*/

创建解析器

public static Document createdoc() throws Exception {
		DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = builderFactory.newDocumentBuilder();
		Document document = builder.parse("src/TV.xml");
		return document;

	}

使用jaxp实现查询操作

public static void query()throws Exception{
		Document document = createdoc();
		diguiquery(document);
		
	}
	private static void diguiquery(Node node) {
		//判断是元素类型时候才打印
		if(node.getNodeType() == Node.ELEMENT_NODE) {			
				System.out.println(node.getNodeName());
		}
		NodeList list = node.getChildNodes();
		//遍历list
		for(int i=0;i<list.getLength();i++) {
			//得到每一个节点
			Node node1 = list.item(i);
			//继续得到node1的子节点
			//node1.getChildNodes()
			diguiquery(node1);
		}
	}

使用jaxp实现删除操作

public static void delTime() throws Exception {
		Document document = createdoc();
		
		Node TIME = document.getElementsByTagName("DESCRIPTION").item(0);
	
		Node p1 = TIME.getParentNode();
		
		p1.removeChild(TIME);
		
		TransformerFactory transformerFactory = TransformerFactory.newInstance();
		Transformer transformer = transformerFactory.newTransformer();
		transformer.transform(new DOMSource(document), new StreamResult("src/TV.xml"));
	}

使用jaxp实现修改操作

public static void changeDate() throws Exception {
		Document document = createdoc();
		
		Node DATE = document.getElementsByTagName("DATE").item(0);
		DATE.setTextContent("20-3-30-10:34");
		
		TransformerFactory transformerFactory = TransformerFactory.newInstance();
		Transformer transformer = transformerFactory.newTransformer();
		transformer.transform(new DOMSource(document), new StreamResult("src/TV.xml"));
	}

使用jaxp实现添加操作

public static void addsex() throws Exception {
		Document document = createdoc();
		
		Node DATE = document.getElementsByTagName("DATE").item(0);
		Element element = document.createElement("sex");
		Text text = document.createTextNode("nan");
		element.appendChild(text);
		DATE.appendChild(element);
		TransformerFactory transformerFactory = TransformerFactory.newInstance();
		Transformer transformer = transformerFactory.newTransformer();
		transformer.transform(new DOMSource(document), new StreamResult("src/TV.xml"));
	}

注:当修改xml文件当中的标签或者内容时,切记最后进行回写操作。你当前操作的document对象是在内存当中的,不进行回写,无法将修改后的结果显示出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值