XML_day05_jaxp修,删,改,遍历

一、jaxp查询

	//查询所有name元素的值
	/*
	 * 1.创建解析器工厂
	 * 2.根据解析器工厂创建解析器
	 * 3.解析xml返回document
	 * 4.得到所有的name元素
	 * 5.返回集合,遍历集合,得到每一个name元素
	 * */
	DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
	DocumentBuilder builder = builderFactory.newDocumentBuilder();
	Document document = builder.parse("src/person.xml");
	NodeList list = document.getElementsByTagName("name");
	//遍历集合
	for(int i=0;i<list.getLength();i++){
		Node name1=list.item(i);
		//得到name元素里面的值
		String s1=name1.getTextContent();
		System.out.println(s1);
	
	}

二、jaxp添加
在第一个p1下面,添加一个male

public static void addSex() throws Exception{
	/*
	 * 1.创建解析器工厂
	 * 2.创建解析器
	 * 3.解析xml,得到document
	 * 
	 * 4.得到第一个p1(得到所有p1,使用item方法下标得到)
	 * 5.创建sex标签createElement
	 * 6.创建文本createTextNode
	 * 7.把文本添加到sex下面,appendChild()
	 * 8.把sex添加到第一个P1下面
	 * 
	 * 9.对xml进行了修改,需要回写xml
	 * */
	DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
	DocumentBuilder builder = builderFactory.newDocumentBuilder();
	Document document = builder.parse("src/person.xml");
	//得到所有的p1
	NodeList list = document.getElementsByTagName("p1");
	
	//得到第一个P1
	Node p1 = list.item(0);
	
	//创建标签
	Element sex1 = document.createElement("sex");
	//创建文本
	Text text1 = document.createTextNode("male");
	//把文本添加到sex1下面
	sex1.appendChild(text1);
	//把sex1添加到P1下面
	p1.appendChild(sex1);
	//回写xml
	TransformerFactory transformerFactory = TransformerFactory.newInstance();
	Transformer  transformer = transformerFactory.newTransformer();
	transformer.transform(new DOMSource(document), new StreamResult("src/person.xml"));
	
}

三、jaxp修改

	public static void modifySex() throws Exception{
	/*	
	 * 1.创建解析器工厂
	 * 2.创建解析器
	 * 3.解析xml,得到document
		 * 
	 *4. 得到sex  item方法
	 *5.修改sex里面的值, setTextContent方法
	 *
	 *6.回写xml
	*/
		DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = builderFactory.newDocumentBuilder();
		Document document = builder.parse("src/person.xml");
		
		//得到sex
		Node sex1 = document.getElementsByTagName("sex").item(0);
		//修改sex值
		sex1.setTextContent("nan");
		
		//回写xml
		TransformerFactory transformerFactory = TransformerFactory.newInstance();
		Transformer  transformer = transformerFactory.newTransformer();
		transformer.transform(new DOMSource(document), new StreamResult("src/person.xml"));	
	}

四、jaxp遍历节点

//递归遍历的方法

	private static void list1(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的子节点
			list1(node1);
		}		
	}
	//不用回写xml
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值