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()>){//如果集合不为空,返回集合
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());
}
}

三、运行结果

最新文章

  1. LoadRunner访问Mysql数据库
  2. Bootstrap学习笔记系列7-----Bootstrap简单背景CSS及其他辅助类
  3. java 泛型详解
  4. 透过WebGL 3D看动画Easing函数本质
  5. NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
  6. Directadmin清空所有Tickets命令
  7. AHOI2013 Round2 Day1 简要题解
  8. 在windows7中使用计划任务命令SCHTASKS查询计划任务失败的解决方案
  9. Eclipse 常用快捷键与使用技巧总结
  10. 基于visual Studio2013解决面试题之0710求方优化
  11. spring自带定时器
  12. hdu2050 折线分割平面---递推
  13. String压缩 解压缩
  14. Python面向对象 组合(选课系统示例)
  15. GiBbook实用配置以及插件
  16. java开发人员win10配置
  17. Python之缩进块
  18. EasyUI 如何结合JS导出Excel文件
  19. Layer-level的快速算法
  20. element-ui的滚动条组件el-scrollbar(官方没有)

热门文章

  1. BZOJ_4591_[Shoi2015]超能粒子炮&#183;改_Lucas定理
  2. 【POJ 1155】TELE
  3. ChartCtrl源码剖析之——CChartAxis类
  4. ChartCtrl源码剖析之——CChartAxisLabel类
  5. Rails 浅谈 ActiveRecord 的 N + 1 查询问题(copy)
  6. ThinkPHP3.2.3学习笔记4---统计ThinkPHP3.2.3加载的文件
  7. [Usaco2006 Mar]Mooo 奶牛的歌声
  8. Android Dialogs(5)[正常显示dlg,将Fragment显示为dialog,将Aty显示为dlg,嵌入],关闭Dialog
  9. linux系统添加java和glassfish环境变量
  10. 473 Matchsticks to Square 火柴拼正方形