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()); } }
三、運行結果