• XML和JSON


    XML

    XML(EXtensible Markup Language),可扩展标记语言 特点 XML与操作系统、编程语言的开发平台无关 实现不同系统之间的数据交换

    作用: 数据交互 配置应用程序和网站 Ajax基石

    基于XML的DOM4J:

    一,新建一个XML文件

    <?xml version="1.0" encoding="GBK"?>
    <Books> 
      <book id="1"> 
        <name>java基础</name>  
        <price>25.8</price>  
        <describe>一本好书!</describe> 
      </book>  
      <book id="2"> 
        <price>22</price>  
        <describe>学习页面设计!</describe> 
      </book>  
      <book id="3" type="书籍"> 
        <name>数据库的安装与维护</name>  
        <price>22</price>  
        <describe>学习页面设计!</describe> 
      </book> 
    </Books>

    二、DOM4J对XML文件的增删改查和保存

    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Iterator;
    
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    public class XmlTest {
         Document document;    
        public static void main(String[] args) throws Exception {
            XmlTest test=new XmlTest();
            test.getRoot();
            test.addElement();
            test.removeElement();    
            test.modifyElement();
            test.saveXml();
            test.selectElement("3");  

              List<Element> list=test.dgXml(test.document.getRootElement(), "describe");
              System.out.println(list);

           
        }
        //获得文档对象和根节点
        public void getRoot() throws Exception{
             SAXReader reader = new SAXReader();
             document= reader.read(this.getClass().getResourceAsStream("NewFile.xml"));         
             Element ele=document.getRootElement();
             System.out.println(ele.getName());
            
        }
        //保存
        public void saveXml() throws Exception{
            FileWriter fw=new FileWriter("E:\ProgramFiles\Myeclipse\Workspaces\fanshe_Git\src\ldl\xmlAndJSON\NewFile.xml");
            //设置写入格式
            OutputFormat format=OutputFormat.createPrettyPrint();
            //设置字符格式
            format.setEncoding("GBK");
            XMLWriter xw=new XMLWriter(fw,format);
            xw.write(document);
            xw.flush();
            xw.close();
            fw.close();                        
        }
        //添加节点
        public void addElement(){
            //获得根节点
            Element ele=document.getRootElement();
            //在根节点下添加子节点
            Element book=ele.addElement("book");
            //添加子节点的属性和值
            book.addAttribute("id", "2");
            book.addAttribute("type", "书籍");
            //在子节点下添加子节点并赋值
            Element name=book.addElement("name");
            Element price=book.addElement("price");
            Element describe=book.addElement("describe");
            name.addText("JSP页面");
            price.addText("22");
            describe.addText("学习页面设计!");        
        }
        //删除节点
        public void removeElement(){
            //获得根节点
            Element root=document.getRootElement();
            //获得根节点下所有节点的迭代器
            Iterator<Element> iter=root.elementIterator();
            //遍历所有节点
            while(iter.hasNext()){
                //获得该节点
                Element elem=iter.next();
                if(elem.attributeValue("id").equals("2")){
                    //获得该节点下,name节点
                    Element t=elem.element("name");
                    //删除子节点
                    elem.remove(t);        
                }
            }
        }
        //根据id查询节点
        public void selectElement(String id){
            //获取根节点
            Element root=document.getRootElement();
            //获取根节点的子节点的迭代器
            Iterator<Element> ite=root.elementIterator();
            while(ite.hasNext()){
                Element elem=ite.next();
                if(elem.attributeValue("id").equals(id)){
                    Iterator<Element> it=elem.elementIterator();
                    while(it.hasNext()){
                        System.out.println(it.next().getText());
                    }
                    break;
                }
            }
        }
        //修改子节点
        public void modifyElement(){
            //获取根节点
            Element root=document.getRootElement();
            //获取根节点下所有子节点的迭代器
            Iterator<Element> it=root.elementIterator();
            while(it.hasNext()){
                Element ele=it.next();
                if(ele.attributeValue("id").equals("3")){
                    Element e=ele.element("name");
                    e.setText("数据库的安装与维护");
                }
            }
        }
    }

    //递归实现无限极节点遍历
        public List<Element> dgXml(Element e,String name){
            List<Element> list=new ArrayList<Element>();
            Iterator<Element> it=e.elementIterator();//获取当前节点的子节点的集合
            while(it.hasNext()){
                Element ele=it.next();//获取子节点
                if(ele.getName().equals(name)){//子节点名字和要找的节点一样,添入集合
                    list.add(ele);
                }
            }
            if(list.size()>0){//如果集合不为空,返回集合
                return list;
            }else{
                Iterator<Element> iter=e.elementIterator();//重新获取节点下的子节点的集合
                while(iter.hasNext()){
                    List<Element> lists=dgXml(iter.next(),name);//递归查询每个子节点
                    list.addAll(lists);//把所有返回的集合添加作为一个集合
                }
                return list;
            }                        
        }

    JSON简介

    一、新建个Student类

    public class Student {
        private String name;
        private int age;
        public Student(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
    }

    二、测试类,实现JSON字符串和对象之间的转换

    public class JSONDemo {
        public static void main(String[] args) {
            String s=JSON.toJSONString(new Student("张三",18));
            System.out.println(s);
            String json="{"age":18,"name":"张三"}";
            Student stu=JSON.parseObject(json, Student.class);
            System.out.println("姓名是:"+stu.getName()+",年龄是:"+stu.getAge());
        }
    }

    三、运行结果

  • 相关阅读:
    硬件设计问题——持续更新
    PCB设计资源整理
    PCB层叠设计和电源分割
    PCB设计技巧
    铜厚电流、Layout 3W原则 20H原则 五五原则
    final关键字
    面向对象——继承与组合
    面向对象——继承
    this总结
    static总结
  • 原文地址:https://www.cnblogs.com/TFE-HardView/p/11059588.html
Copyright © 2020-2023  润新知