xml解析

TestXMLParser.java

package test;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import javax.lang.model.element.Element;
import javax.swing.text.Document;
import javax.xml.soap.Node;

import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;

public class TestXmlParser {
	@Test
	public void testXml1() throws DocumentException {
		//1.导入dom解析包
		//2.创建一个SAXReader
		 SAXReader saxReader=new SAXReader();
		 //3.使用reader读取文件,返回一个document对象
		org.dom4j.Document doc =saxReader.read(new File("src/test/stu.xml"));
		System.out.println(doc);
	}
	@Test
	public void testXml2() throws DocumentException {
		 SAXReader reader=new SAXReader();
		 org.dom4j.Document doc =reader.read(new File("src/test/stu.xml"));
		 /*short nodeType=doc.getNodeType();
		 System.out.println(nodeType);*/
		 //获取根节点,使用根节点往下找
		org.dom4j.Element element= doc.getRootElement();
		 //System.out.println( element.getNodeType());
		 System.out.println( element.getName());
		 List<org.dom4j.Element>elements=element.elements();
		 for(org.dom4j.Element ele : elements) {
			  //String text=((org.dom4j.Element) ele).elementText("name");
			 List<org.dom4j.Element>stuChild=element.elements();
			 for(org.dom4j.Element ele2 :stuChild) {
				 System.out.println(ele2.getText());
			 }
		 }//elements代表所有student的集合
		 //for(元素类型t 元素变量x : 遍历对象obj)
		 for(org.dom4j.Element eleTemp :elements) {
			 //每个eleTemp代表一个student标签
			 String id=eleTemp.attributeValue("id");
			 System.out.println("id值为:"+id);
		 }
		 
	}
	@Test
	public void testXml3() throws DocumentException {
		SAXReader reader=new SAXReader();
		org.dom4j.Document document=reader.read(new File("src/test/stu.xml"));
		org.dom4j.Element rootEle=document.getRootElement();
		List<org.dom4j.Element>elements=rootEle.elements();
		List<Student>list=new ArrayList<>();
		for(org.dom4j.Element ele : elements) {
			String id=ele.attributeValue("id");
			String name=ele.elementText("name");
			String age=ele.elementText("age");
			int parseInt=0;
			try {
				parseInt= Integer.parseInt(age);
			} catch (Exception e) {
				// TODO: handle exception
			}
			
			list.add(new Student(name,parseInt,id));
	
		}
		System.out.println(list);
	
	}
	@Test
	public void testXml4() throws DocumentException {
		SAXReader reader= new SAXReader();
		org.dom4j.Document document=reader.read(new File("src/test/stu.xml"));
		org.dom4j.Element rootElement=document.getRootElement();
		org.dom4j.Element element=rootElement.element("student");
		org.dom4j.Element name=element.element("name");
		//System.out.println(name.getText());
		name.setText("王五");
		name.addAttribute("nickname", "小王");
		//把修改的东西保存起来
		OutputFormat format= OutputFormat.createPrettyPrint();
		//生成的文件有格式
		XMLWriter writer = null;
		try {
			writer = new XMLWriter(new FileOutputStream("out.xml"),format);
		} catch (UnsupportedEncodingException | FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			writer.write(document);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			writer.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	@Test
	//*xmlPath是用来简化dom查询
	// *  /从根开始找
	 //*  //找所有
	 
	
	public void testXml5() throws DocumentException {
		SAXReader reader= new SAXReader();
		org.dom4j.Document document=reader.read("src/test/stu.xml");
		org.dom4j.Element rootelement=document.getRootElement();
		org.dom4j.Node node=rootelement.selectSingleNode("//student[@id='456']");
		String name=node.getName();
		System.out.println(name);
	}
	
	

}

stu.xml

<?xml version="1.0" encoding="UTF-8"?>
<students>
	<student id="123">
		<name>张三</name>
		<age>18</age>
	</student>
	<student id="456">
		<name>张三</name>
		<age>18&lt;19</age>
	</student>
	
</students>

student.java

package test;

public class Student {
	private String name;
	private Integer age;
	private String id;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public Student(String name, Integer age, String id) {
		super();
		this.name = name;
		this.age = age;
		this.id = id;
	}
	public Student() {
		super();
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + ", id=" + id + "]";
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值