加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

jaxp解析xml

发布时间:2020-12-16 00:22:58 所属栏目:百科 来源:网络整理
导读:有一个xml ?xml version="1.0" encoding="UTF-8" standalone="no"?书架书书名 name="xxxx"java web/书名作者张大/作者价格99/价格/书书书名spring/书名作者呜呜/作者价格55/价格/书/书架 读取指定节点的内容 public void read1() throws Exception{//创建工

有一个xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?><书架>
	<书>
		<书名 name="xxxx">java web</书名>
		<作者>张大</作者>
		<价格>99</价格>
	</书>
	<书>
		<书名>spring</书名>
		<作者>呜呜</作者>
		<价格>55</价格>
	</书>
</书架>

读取指定节点的内容
	public void read1() throws Exception{
		//创建工厂
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		//得到Dom解析器
		DocumentBuilder builder = factory.newDocumentBuilder();
		//得到代表文档的document
		Document document = builder.parse("src/book.xml");
		
		NodeList list = document.getElementsByTagName("书名");
		Node node = list.item(1);
		String content = node.getTextContent();
		System.out.println(content);
		
	}

遍历所有标签
	public void read2() throws Exception{
		
		//创建工厂
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		//得到Dom解析器
		DocumentBuilder builder = factory.newDocumentBuilder();
		//得到代表文档的document
		Document document = builder.parse("src/book.xml");
		
		Node root = document.getElementsByTagName("书架").item(0);
		
		traverse(root);
		
	}

	private void traverse(Node node) {
		
		if(node instanceof Element){
			System.out.println(node.getNodeName());
		}
		NodeList list = node.getChildNodes();
		for(int i=0;i<list.getLength();i++){
			Node child = list.item(i);
			traverse(child);
		}
	}

得到标签属性
	public void read3() throws Exception{
		//创建工厂
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		//得到Dom解析器
		DocumentBuilder builder = factory.newDocumentBuilder();
		//得到代表文档的document
		Document document = builder.parse("src/book.xml");
		
		Element bookname =  (Element) document.getElementsByTagName("书名").item(0);
		String value = bookname.getAttribute("name");
		System.out.println(value);
	}

在指定位子添加节点,不指定加在最后一个位子
	public void add() throws Exception{
		//创建工厂
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		//得到Dom解析器
		DocumentBuilder builder = factory.newDocumentBuilder();
		//得到代表文档的document
		Document document = builder.parse("src/book.xml");
		
		//价格上添加评价
		Element evaluate = document.createElement("评价");
		evaluate.setTextContent("well");
		//得到参考节点
		Element reNode = (Element) document.getElementsByTagName("价格").item(0);
		//得到父节点
		Element book =  (Element) document.getElementsByTagName("书").item(0);
		//父节点中插入
		book.insertBefore(evaluate,reNode);
		
		//更新后的内存写入xml文档
		TransformerFactory tf_factory =  TransformerFactory.newInstance();
		Transformer t = tf_factory.newTransformer();
		t.transform(new DOMSource(document),new StreamResult(new FileOutputStream("src/book.xml")));
	}

删除节点
<span style="white-space:pre">	</span>public void delete() throws Exception{
		//创建工厂
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		//得到Dom解析器
		DocumentBuilder builder = factory.newDocumentBuilder();
		//得到代表文档的document
		Document document = builder.parse("src/book.xml");
		
		//得到要删除的节点
		Element price =  (Element) document.getElementsByTagName("价格").item(0);
		//得到父节点
		Element book =  (Element) document.getElementsByTagName("书").item(0);
		
		//删
		book.removeChild(price);
		//更新后的内存写入xml文档
		TransformerFactory tf_factory =  TransformerFactory.newInstance();
		Transformer t = tf_factory.newTransformer();
		t.transform(new DOMSource(document),new StreamResult(new FileOutputStream("src/book.xml")));
	}

第二种删除方法
	public void delete2() throws Exception{
		//创建工厂
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		//得到Dom解析器
		DocumentBuilder builder = factory.newDocumentBuilder();
		//得到代表文档的document
		Document document = builder.parse("src/book.xml");
		
		//得到要删除的节点
		Element e =  (Element) document.getElementsByTagName("价格").item(0);
		e.getParentNode().removeChild(e);
	
		//更新后的内存写入xml文档
		TransformerFactory tf_factory =  TransformerFactory.newInstance();
		Transformer t = tf_factory.newTransformer();
		t.transform(new DOMSource(document),new StreamResult(new FileOutputStream("src/book.xml")));
	}

更新节点
	@Test	
	public void update() throws Exception{
		//创建工厂
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		//得到Dom解析器
		DocumentBuilder builder = factory.newDocumentBuilder();
		//得到代表文档的document
		Document document = builder.parse("src/book.xml");
		
		//得到要更新的节点
		Element e =  (Element) document.getElementsByTagName("价格").item(0);
		e.setTextContent("102");
	
		//更新后的内存写入xml文档
		TransformerFactory tf_factory =  TransformerFactory.newInstance();
		Transformer t = tf_factory.newTransformer();
		t.transform(new DOMSource(document),new StreamResult(new FileOutputStream("src/book.xml")));
	}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读