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());
    }
}

三、運行結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM