`
wayfarer
  • 浏览: 294541 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

XML解析

阅读更多

下面代码用到了jdom和dom4j两个包

public class JDOMXML_1 {
	public static void main(String[] args) throws IOException, JDOMException {
		BuildXMLDoc();
	}
	public static void BuildXMLDoc() throws IOException, JDOMException {
		Element root = new Element("学生花名册");
		Document doc = new Document(root); // 根节点添加到文档中;

		for (int i = 0; i < 2; i++) {
			Element elements = new Element("学生");
			elements.setAttribute("id", String.valueOf(i));

			// 给 user 节点添加子节点并赋值
			elements.addContent(new Element("姓名").setText("张三"));
			elements.addContent(new Element("年龄").setText("28"));
			elements.addContent(new Element("性别").setText("男"));

			for (int j = 0; j < 2; j++) {
				Element elements2 = new Element("地址");
				elements2.addContent(new Element("浦东").setText("香楠路"));
				elements2.addContent(new Element("杨浦").setText("大学路"));
				elements2.addContent(new Element("黄浦").setText("南京西路"));
				elements.addContent(elements2);
			}
			root.addContent(elements);
		}
		XMLOutputter xmlOut = new XMLOutputter();
		xmlOut.output(doc, new FileOutputStream("D:\\student_4.xml"));
	} 
}

 

public class JDOMXML_2 {
	public static void main(String[] args) {
		jDom_DOM_Reader();
		jDom_SAX_Reader();
	}
	@SuppressWarnings("unchecked")
	private static void jDom_DOM_Reader() {
		DOMBuilder builder = new DOMBuilder();
        DOMParser parser = new DOMParser();
        String output = "";
        try {
            parser.parse("D:\\student_4.xml");
            org.w3c.dom.Document domDocument = parser.getDocument();
            org.jdom.Document jdomDocument = builder.build(domDocument);
            Element root = jdomDocument.getRootElement();
            output += "Root Node: " + root.getName() + "\r\n";
            List<Element> children = root.getChildren();
            output += "SubNodes's Size " + children.size() + "\r\n";
            for(int i = 0; i < children.size(); i++){
                Element node = children.get(i);
                output += i + " subNode: " + node.getName() + "\r\n";
                List<Attribute> attrs = node.getAttributes();
                for(int k = 0; k < attrs.size(); k++){
                    Attribute attr = attrs.get(k);
                    output += "Attribute: " + attr.getName() + " --> " + attr.getValue() + "\r\n";
                }
                List<Element> childrenList = node.getChildren();
                for(int j = 0; j < childrenList.size(); j++){
                    Element childNode = childrenList.get(j);
                    output += "SubNode: " + childNode.getName() + " --> " + childNode.getValue() + "\r\n";
                }
            }
            System.out.println(output);
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
	}
	@SuppressWarnings("unchecked")
	private static void jDom_SAX_Reader() {
		SAXBuilder builder = new SAXBuilder();
        String output = "";
        try {
        	org.jdom.Document doc = builder.build("D:\\student_4.xml");
            Element root = doc.getRootElement();
           
            List<Element> children = root.getChildren();
            output += "id\t" + "姓名\t" + "年龄\t" + "性别\t" + "\r\n";
            for(int i = 0; i < children.size(); i++){
                Element node = children.get(i);
                Attribute attr = node.getAttribute("id");
                output += attr.getValue() + "\t";
                output += node.getChildText("姓名") + "\t";
                output += node.getChildText("年龄") + "\t";
                output += node.getChildText("性别") + "\r\n";
            }
            System.out.println(output);
        } catch (JDOMException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
	}
}

 

public class DOMXML_1 {
    public static void main(String[] args) {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.newDocument();
            document.setXmlVersion("1.0");

            // **************************************************************************************
            Element root = document.createElement("学生花名册"); // 创建根节点  
            document.appendChild(root);
           
            Element student = document.createElement("学生");
            student.setAttribute("姓名", "张三");
            root.appendChild(student);

            Element sex = document.createElement("性别");
            sex.setTextContent("男");
            student.appendChild(sex);

            Element age = document.createElement("年龄");
            age.setTextContent("25");
            student.appendChild(age);
           
            Element phone = document.createElement("电话");
            phone.setTextContent("55660535|13622654565");
            student.appendChild(phone);
            
            // **************************************************************************************
            student = document.createElement("学生");
            student.setAttribute("姓名", "李四");
            root.appendChild(student);

            sex = document.createElement("性别");
            sex.setTextContent("女");
            student.appendChild(sex);
            
            age = document.createElement("年龄");
            age.setTextContent("18");
            student.appendChild(age);
           
            Element addr = document.createElement("地址");
            addr.setTextContent("title,publisher,published_calendar");
            student.appendChild(addr);

            // **************************************************************************************
            File file = new File("D://student_1.xml"); //生成xml文件
            if (!file.exists()) {
                file.createNewFile();
            }
            FileOutputStream out = new FileOutputStream(file);
            StreamResult xmlResult = new StreamResult(out);
           
            // **************************************************************************************
            TransformerFactory transFactory = TransformerFactory.newInstance();
            Transformer transFormer = transFactory.newTransformer();
            DOMSource domSource = new DOMSource(document);
            transFormer.transform(domSource, xmlResult); //输出xml文件           
            System.out.println(file.getAbsolutePath());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

public class DOMXML_2 {
	private Vector<StudentBean> student_vector = new Vector<StudentBean>();
	
	public DOMXML_2() {
		String[] names = {"张三", "李四", "王五"};
		String[] sexs = {"男", "女", "男"};
		int[] ages = {25, 22, 31};
		String[] phones = {"021-55662222", "027-36588814", "010-66452235"};
		for (int i = 0; i < phones.length; i++) {
			StudentBean sb = new StudentBean();
			sb.setName(names[i]);
			sb.setSex(sexs[i]);
			sb.setAge(ages[i]);
			sb.setPhone(phones[i]);
			student_vector.addElement(sb);
		}
	}
	
	public static void main(String[] args) {
		DOMXML_2 test = new DOMXML_2();
		File file = new File("D://student_2.xml");
		try {
			test.domWrite(file);
			test.domRead(file);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	private void domRead(File inFile) throws ParserConfigurationException, SAXException, IOException {
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = dbf.newDocumentBuilder();
		org.w3c.dom.Document doc = db.parse(inFile);
		
		// 取跟目录
		org.w3c.dom.Element root = doc.getDocumentElement();
		// 取学生列表元素
		NodeList students = root.getElementsByTagName("学生");
		for (int i = 0; i < students.getLength(); i++) {
			// 取学生元素
			org.w3c.dom.Element student = (org.w3c.dom.Element) students.item(i);
			StudentBean studentBean = new StudentBean();
			studentBean.setName(student.getAttribute("姓名"));
			System.out.println("Name = " + studentBean.getName());
			
			NodeList sexs = student.getElementsByTagName("性别");
			if (sexs.getLength() == 1) {
				org.w3c.dom.Element e = (org.w3c.dom.Element) sexs.item(0);
				org.w3c.dom.Text t = (org.w3c.dom.Text) e.getFirstChild();
				studentBean.setSex(t.getNodeValue());
				System.out.println("Sex = " + studentBean.getSex());
			}
			
			NodeList ages = student.getElementsByTagName("年龄");
			if (ages.getLength() == 1) {
				org.w3c.dom.Element e = (org.w3c.dom.Element) ages.item(0);
				org.w3c.dom.Text t = (org.w3c.dom.Text) e.getFirstChild();
				studentBean.setAge(Integer.parseInt(t.getNodeValue()));
				System.out.println("Age = " + studentBean.getAge());
			}
			
			NodeList phones = student.getElementsByTagName("电话");
			if (phones.getLength() == 1) {
				org.w3c.dom.Element e = (org.w3c.dom.Element) phones.item(0);
				org.w3c.dom.Text t = (org.w3c.dom.Text) e.getFirstChild();
				studentBean.setPhone(t.getNodeValue());
				System.out.println("Phone = " + studentBean.getPhone());
			}
			student_vector.add(studentBean);
			System.out.println("============================");
		}
	}
	private void domWrite(File outFile) throws ParserConfigurationException, FileNotFoundException, TransformerException {
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = dbf.newDocumentBuilder();
		org.w3c.dom.Document doc = db.newDocument();
		
		// 建立根元素
		org.w3c.dom.Element root = doc.createElement("学生花名册");
		
		// 将根元素添加到文档
		doc.appendChild(root);
		
		// 取学生信息的Bean列表
		for (int i = 0; i < student_vector.size(); i++) {
			StudentBean studentBean = (StudentBean) student_vector.get(i);
			
			org.w3c.dom.Element student = doc.createElement("学生");
			student.setAttribute("姓名", studentBean.getName());
			root.appendChild(student);
			
			org.w3c.dom.Element sex = doc.createElement("性别");
			student.appendChild(sex);
			org.w3c.dom.Text tSex = doc.createTextNode(studentBean.getSex());
			sex.appendChild(tSex);
			
			org.w3c.dom.Element age = doc.createElement("年龄");
			student.appendChild(age);
			org.w3c.dom.Text tAge = doc.createTextNode(String.valueOf(studentBean.getAge()));
			age.appendChild(tAge);
			
			org.w3c.dom.Element phone = doc.createElement("电话");
			student.appendChild(phone);
			org.w3c.dom.Text tPhone = doc.createTextNode(studentBean.getPhone());
			phone.appendChild(tPhone);
		}
		FileOutputStream fos = new FileOutputStream(outFile);
		StreamResult xmlResult = new StreamResult(fos);
		
		TransformerFactory transFactory = TransformerFactory.newInstance();
        Transformer transFormer = transFactory.newTransformer();
        DOMSource domSource = new DOMSource(doc);
        transFormer.transform(domSource, xmlResult);
	}
	
	private class StudentBean {
		private String sex;
		private String name;
		private int age;
		private String phone;
		public String getSex() {
			return sex;
		}
		public void setSex(String sex) {
			this.sex = sex;
		}
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public int getAge() {
			return age;
		}
		public void setAge(int age) {
			this.age = age;
		}
		public String getPhone() {
			return phone;
		}
		public void setPhone(String phone) {
			this.phone = phone;
		}
	}
}

 

public class XMLEncoder_XMLDecoder {
	public static void object2XML(Object obj, String path) throws FileNotFoundException {
		File file = new File(path);
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
		XMLEncoder xmlEncoder = new XMLEncoder(bos); // 构造一个XML编码器
		xmlEncoder.writeObject(obj); // 使用XML编码器写对象
		xmlEncoder.close();
	}

	public static Object xml2Object(String path) throws FileNotFoundException {
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
		XMLDecoder xmlDecoder = new XMLDecoder(bis); // 构造一个XML解码器
		Object obj = xmlDecoder.readObject(); // 使用XML解码器读对象
		xmlDecoder.close();
		return obj;
	}

	public static void main(String[] args) throws IOException {
		// *****User(JavaBean)的定义必须为Public的,否则会报错。That should be STATIC. Any public instance methods have to follow the bean get/set pattern.
		User user = new User();
		user.setName("张三");
		user.setAge(29);
		user.setSex("男");
		user.setPhone("15825253636");
	
		String path = "D://student_3.xml";
		XMLEncoder_XMLDecoder.object2XML(user, path);
		User newUser = (User) XMLEncoder_XMLDecoder.xml2Object(path);
		System.out.println(newUser.getName());
		System.out.println(newUser.getAge());
		System.out.println(newUser.getSex());
		System.out.println(newUser.getPhone());
	}
}

 

public class User {
	private String sex;
	private String name;
	private int age;
	private String phone;
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
}

 

22

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics