zoukankan      html  css  js  c++  java
  • 数据传输---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>
  • 相关阅读:
    cookie与session的原理及区别
    jwt原则
    Django rest framework基础 RESTful风格
    vue项目使用整理
    Serializer 字段验证以及序列化
    ModelSerializer 字段验证以及序列化
    Django
    FREE 命令结果完全剖析
    一个一元二次方程求解编程引申的两个知识点(abs和fabs的区别以及浮点数比较相等)
    signed和unsigned之二
  • 原文地址:https://www.cnblogs.com/sanhuan/p/4757510.html
Copyright © 2011-2022 走看看