DOM解析XML文件
今天复习了一下DOM解析XML文件
Student.java此类用来保存解析出来的数据;
public class Student { String name; String sex; int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
解析代码:
public class DOMParseXml { public static void main(String[] args) { DOMParseXml parse = new DOMParseXml(); // ArrayList<Student> list = parse.parseXml(); parse.createXml(); } public ArrayList<Student> parseXml() { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse("test.xml"); ArrayList<Student> list = new ArrayList<Student>(); NodeList nodeList = document.getElementsByTagName("student"); for (int i = 0;i<nodeList.getLength();i++){ Element element = (Element) nodeList.item(i); String name = element.getElementsByTagName("name").item(0).getFirstChild().getNodeValue(); String sex = element.getElementsByTagName("sex").item(0).getFirstChild().getNodeValue(); String age = element.getElementsByTagName("age").item(0).getFirstChild().getNodeValue(); Student student = new Student(); student.setAge(Integer.parseInt(age)); student.setName(name); student.setSex(sex); list.add(student); System.out.println(name+","+sex+","+age); } return list; } catch (Exception e) { e.printStackTrace(); return null; } } public void createXml(){ try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.newDocument();//节点都是由文本创建 Element root = document.createElement("books"); document.appendChild(root);//添加根节点; Element book1 = document.createElement("book"); Element book2 = document.createElement("book"); Element book3 = document.createElement("book"); root.appendChild(book1); root.appendChild(book2); root.appendChild(book3); //创建三级节点 Element name = document.createElement("name"); name.setTextContent("管理心理学"); Element type = document.createElement("type"); type.setTextContent("管理学"); Element price = document.createElement("price"); price.setTextContent("55.12"); book1.appendChild(name); book1.appendChild(type); book1.appendChild(price); //创建三级节点 Element name2 = document.createElement("name"); name2.setTextContent("计算机基础"); Element type2 = document.createElement("type"); type2.setTextContent("计算机"); Element price2 = document.createElement("price"); price2.setTextContent("98.32"); book2.appendChild(name2); book2.appendChild(type2); book2.appendChild(price2); //创建三级节点 Element name3 = document.createElement("name"); name3.setTextContent("教育管理学"); Element type3 = document.createElement("type"); type3.setTextContent("教育学"); Element price3 = document.createElement("price"); price3.setTextContent("25.13"); book3.appendChild(name3); book3.appendChild(type3); book3.appendChild(price3); TransformerFactory transFactory=TransformerFactory.newInstance();//调用newTransformer()方法得到一个Transformer对象 Transformer transformer=transFactory.newTransformer(); //给文件转换器设置字符编码 transformer.setOutputProperty("encoding", "utf-8"); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); DOMSource domSource=new DOMSource(document); File file=new File("newXML.xml"); FileOutputStream out=new FileOutputStream(file); StreamResult xmlResult=new StreamResult(out); transformer.transform(domSource, xmlResult); } catch (Exception e) { e.printStackTrace(); } } }