下面代码用到了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