解析xml文件: public class xmlTest { public static void main(String[] args) { try{ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new File("liu.xml")); //document对象是org。w3c包中的,java自带包 Element root = document.getDocumentElement();//读取文档根元素 System.out.println(root.getAttribute("cat")); //读取根元素的指定属性值 NodeList list = root.getElementsByTagName("lan");//读取子元素,必须指定元素名,返回所以节点 for(int i=0;i<list.getLength();i++){ //遍历集合 Element lan = (Element) list.item(i); //从集合中获取,一条元素 System.out.println("---"); System.out.println("id="+lan.getAttribute("id")); //获取该元素中,id属性的值 //用name的方法获取不方便 // Element name = (Element) lan.getElementsByTagName("name").item(0);//按元素名获取该元素的子元素,将得到该名字的元素集合,从集合元素中获取第一个元素 // System.out.println(name.getTextContent()); //获取元素中的name属性值,因为是文本 所以用getText获取 NodeList clist = lan.getChildNodes();//获取该元素下的所有子节点 for (int j = 0; j < clist.getLength(); j++) { // Element c = (Element) clist.item(j); // System.out.println(c.getTagName()+"="+c.getTextContent());//获得 Node c = clist.item(j); if(c instanceof Element) //因为该api是把每次回车后读取成一个节点,所以要做判断验证只有当节点是Element才做处理。空的就不做处理。 System.out.println(c.getNodeName()+"="+c.getTextContent()); } } }catch(Exception e){ } } } 生成xml文件: public class createXml { public static void main(String[] args) throws ParserConfigurationException, TransformerException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//使用它的静态方法创建一个工厂对象。(单例模式) DocumentBuilder builder = factory.newDocumentBuilder();//利用工厂对象生成文档生成器对象 Document document = builder.newDocument(); //利用文档生成器,创建一个具体的文档 //根元素 Element root = document.createElement("Languages");//利用文档创建一个以languages为名的元素 root.setAttribute("cat", "it"); //在此元素下设置一个叫cat的属性,病赋值为it //子元素 Element lan1 = document.createElement("lan"); //创建一个lan元素 lan1.setAttribute("id", "1"); //定义一个id属性 //子元素,子元素 Element name1 = document.createElement("name");//创建一个name元素 name1.setTextContent("java"); //在元素下添加一个文本 Element ide1 = document.createElement("ide"); ide1.setTextContent("Eclipse"); lan1.appendChild(name1); //把name1元素添加到lan元素里 lan1.appendChild(ide1); //把ide1元素添加到lan元素里 root.appendChild(lan1); //把lan1元素添加到Languages元素里 Element lan2 = document.createElement("lan"); //创建一个lan元素 lan2.setAttribute("id", "2"); //定义一个id属性 Element name2 = document.createElement("name"); name2.setTextContent("switfe"); Element ide2 = document.createElement("ide"); ide2.setTextContent("xcode"); lan2.appendChild(name2); lan2.appendChild(ide2); root.appendChild(lan2); document.appendChild(root); //最后把元素添加到document中 /* ----------------打印与输出到文件---------------------- */ TransformerFactory transformerFactory= TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); StringWriter writer = new StringWriter(); //生成一个字符串输出流 transformer.transform(new DOMSource(document), new StreamResult(writer)); //第一个参数是需要输出的xml,第二个是输出的格式(输出到字符流中) transformer.transform(new DOMSource(document), new StreamResult(new File("liu.xml")));//输出到文件中 System.out.println(writer.toString());//打印字符流。 } }
liu.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <Languages cat="it"> <lan id="1"> <name>java</name> <ide>Eclipse</ide> </lan> <lan id="2"> <name>switfe</name> <ide>xcode</ide> </lan> </Languages>