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()>){//如果集合不为空,返回集合
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());
}
}
三、运行结果
XML和JSON的更多相关文章
- WebApi接口 - 响应输出xml和json
格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点 ...
- 【.net 深呼吸】聊聊WCF服务返回XML或JSON格式数据
有时候,为了让数据可以“跨国经营”,尤其是HTTP Web有关的东东,会将数据内容以 XML 或 JSON 的格式返回,这样一来,不管客户端平台是四大文明古国,还是处于蒙昧时代的原始部落,都可以使用这 ...
- C# XML转JSON,不引用第三方JSON.NET类库
应用场景:需要调用第三方接口(返回XML)数据,然后供自己多个系统使用(涉及跨域,使用JSONP) 代理:调用接口(把XML转换为JSONP解决跨域问题) B/S应用系统:调用代理返回的数据进行UI显 ...
- SQL2008使用json.net实现XML与JSON互转
借助CLR,首先实现字符串的互转,然后使用存储过程实现JSON2table public class JsonFunction { /// <summary> ...
- [Network] HTML、XML和JSON学习汇总
写在前面:楼主也是刚刚接触这方面的知识,之前完全是零基础,后来经朋友推荐了几个不错的博文,看完以后豁然开朗.但是此博文更加偏重于基础知识介绍(其实更深的楼主也还不了解,这方面的大神请绕道),只是分享个 ...
- XML和JSON数据格式对比
概念 XML 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语 ...
- xml和json的区别
本文转自SanMaoSpace的博客 链接地址如下:http://www.cnblogs.com/SanMaoSpace/p/3139186.html 1.定义介绍 (1).XML定义扩展标记语言 ( ...
- C#中XML和json互相转换
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Xm ...
- 数据解析(XML和JSON数据结构)
一 解析 二 XML数据结构 三 JSON 数据结构 一 解析 1 定义: 从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照 ...
- ASP.NET中的XML和JSON
一.DOM简介 1.XML 定义:XML是一种跨语言.跨平台的数据储存格式 2.什么是DOM DOM(document object model)文档对象模型:是一种允许程序或脚本动态的访问更新文档内 ...
随机推荐
- bzoj3090
树形dp 有一个比较明显的dp状态是dp[i][j]表示当前i节点的子树已经满足且i剩下j元钱的最小操作次数,这样复杂度比较高状态数已经有O(n*x)的了,转移再来x,肯定不行. 我们考虑把状态和dp ...
- UVa 11538 Chess Queen (排列组合计数)
题意:给定一个n*m的棋盘,那么问你放两个皇后相互攻击的方式有多少种. 析:皇后攻击,肯定是行,列和对角线,那么我们可以分别来求,行和列其实都差不多,n*A(m, 2) + m*A(n, 2), 这是 ...
- poj2676 Sudoku(搜索)
题目链接:http://poj.org/problem?id=2676 题意:9*9的方格,0代表没数字,其他代表数字,请在格子中填入1~9的数字,使得在每行,每列和每个3*3的方块中,1~9的数字每 ...
- bzoj 1068: [SCOI2007]压缩【区间dp】
神区间dp 设f[l][r][0]为在l到r中压缩的第一个字符为M,并且区间内只有这一个M,f[l][r][0]为在l到r中压缩的第一个字符为M,并且区间内有两个及以上的M 然后显然的转移是f[i][ ...
- 洛谷P4206 [NOI2005]聪聪与可可(期望dp+最短路)
传送门 首先,猫的走位太飘了……只能预处理…… 先对每一个点跑一遍dijkstra跑出最短路,然后再预处理出$nxt[i][j]$表示当猫在$i$老鼠在$j$时猫下一步会走到哪里 然后考虑dp,设$d ...
- akka设计模式系列-akka在秒杀场景的应用
本博客讨论一下akka在秒杀场景下的应用,提出自己的见解,只做抛砖引玉,大神勿喷.秒杀活动涉及到前中后台各个阶段,为了说明问题,我们简化场景,只研究akka在后台如何处理秒杀业务. 秒杀活动 所谓的秒 ...
- python中threading模块中最重要的Tread类
Tread是threading模块中的重要类之一,可以使用它来创造线程.其具体使用方法是创建一个threading.Tread对象,在它的初始化函数中将需要调用的对象作为初始化参数传入. 具体代码如下 ...
- 进击的Python【第十六章】:Web前端基础之jQuery
进击的Python[第十六章]:Web前端基础之jQuery 一.什么是 jQuery ? jQuery是一个JavaScript函数库. jQuery是一个轻量级的"写的少,做的多&quo ...
- 题解报告:hdu 2709 Sumsets
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2709 Problem Description Farmer John commanded his co ...
- assets与res/raw资源目录的区别
1.简介 assets和res/raw工程目录下都可以放一些小于1M的文件(2.3版本以前要求,否则将不能读出数据.),这些文件将被原样打包到APK中应用使用. 2.不同 assets目录下的文件将原 ...