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