数据传输---xml

解析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>
原文地址:https://www.cnblogs.com/sanhuan/p/4757510.html