Dom4jDemo应用-保存手机信息
---恢复内容开始---
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Dom4jDemo2 {
private Document document; // 获得document对象
public void loadDocument() {
SAXReader saxReader = new SAXReader(); //相当于一个解析器
try {
document = saxReader.read(new File("newInfo.xml")); //解析获得document对象
} catch (DocumentException e) {
e.printStackTrace();
}
} // 显示手机的品牌及型号
public void showPhoneInfo() {
// 获取XML根节点
Element root = document.getRootElement();
// 获取所有<Brand>
Iterator eleBrands = root.elementIterator();
while (eleBrands.hasNext()) {
Element brand = (Element) eleBrands.next();
System.out.println(brand.attributeValue("name"));
//获取所有的<Type>
Iterator eleTypes = brand.elementIterator();
while (eleTypes.hasNext()) {
Element type = (Element) eleTypes.next();
System.out.println("\t" + type.attributeValue("name"));
}
}
} /**
* 把xml里手机品牌及型号放入集合里输出
* @return
*/
public List<Brand> queryBrand(){
//获取XML根节点
Element root = document.getRootElement(); List<Element> brands=root.elements();
List<Brand> outBrands=new ArrayList<Brand>();
for (Element eleBrand : brands) {
Brand b=new Brand();
b.setName(eleBrand.attribute("name").getValue());
b.setId(Integer.parseInt(eleBrand.attribute("id").getValue())); List<String> types=new ArrayList<String>();
List<Element> eleTypes=eleBrand.elements();
for(Element elType:eleTypes) {
types.add(elType.attribute("name").getValue());
}
b.setTypes(types); outBrands.add(b);
} return outBrands;
} /**
* 把集合内容写入XML里
*/
public boolean saveBrand(List<Brand> brandList) {
SAXReader reader=new SAXReader();
document=reader.getDocumentFactory().createDocument(); //创建一个新的xml文档
Element root=document.addElement("PhoneInfo"); //新增根元素<PhoneInfo>
for (Brand brand : brandList) {
Element eleBrand=root.addElement("Brand");
eleBrand.addAttribute("name", brand.getName());
eleBrand.addAttribute("id", brand.getId()+"");
for(String type:brand.getTypes()) {
Element eleTypes=eleBrand.addElement("Type");
eleTypes.addAttribute("name", type);
} } try {
XMLWriter writer=new XMLWriter(new FileOutputStream(new File("newInfo.xml")),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
} catch (UnsupportedEncodingException | FileNotFoundException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}
return true;
} // 修改节点
public void updatePhone() {
Element root = document.getRootElement();
Iterator eleBrands = root.elementIterator();
int id = 0;
while (eleBrands.hasNext()) {
Element brand = (Element) eleBrands.next();
id++;
brand.addAttribute("id", id + "");
}
saveXML("newInfo.xml");
} // 增加新的手机品牌信息
public void addNewPhone() {
// 获得XML根元素
Element root = document.getRootElement();
// 创建<Brand name="三星">
Element elBrand = root.addElement("Brand");
elBrand.addAttribute("name", "三星");
// 创建<Type name="Note 9"/>
Element elType = elBrand.addElement("Type");
elType.addAttribute("name", "Note 9");
Element elType1 = elBrand.addElement("Type");
elType1.addAttribute("name", "S 10");
saveXML("newInfo.xml");
} // 保存修改到XML文件
public void saveXML(String path) {
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
XMLWriter writer = null;
try {
writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(path)), format);
writer.write(document);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} // 删除节点
public void deletePhone() {
// 获取XML根节点
Element root = document.getRootElement();
// 获取所有<Brand>
Iterator eleBrands = root.elementIterator();
while (eleBrands.hasNext()) {
Element brand = (Element) eleBrands.next();
if(brand.attributeValue("name").equals("华为")) {
brand.getParent().remove(brand);
}
}
saveXML("newInfo.xml");
} public static void main(String[] args) {
Dom4jDemo2 domDemo = new Dom4jDemo2();
domDemo.loadDocument();
// domDemo.addNewPhone();
// domDemo.updatePhone();
// domDemo.deletePhone();
// domDemo.showPhoneInfo(); List<Brand> brandList=domDemo.queryBrand();
for (Brand brand : brandList) {
System.out.println(brand);
} /* List<String> typeList=new ArrayList<String>();
typeList.add("小米Mix 2");
typeList.add("小米Mix 3");
typeList.add("小米Mix 2S");
List<String> typeList2=new ArrayList<String>();
typeList2.add("Mate 20 S");
typeList2.add("Mate 20 Pro");
typeList2.add("Mate 20 ");
List<String> typeList3=new ArrayList<String>();
typeList3.add("iPhone XS");
typeList3.add("iPhone XS Max");
typeList3.add("iPhone XR ");
Brand b1=new Brand(01,"小米",typeList);
Brand b2=new Brand(02,"华为",typeList2);
Brand b3=new Brand(03,"苹果",typeList3);
List<Brand> brandList=new ArrayList<Brand>();
brandList.add(b1);
brandList.add(b2);
brandList.add(b3);
boolean c=domDemo.saveBrand(brandList);
System.out.println(c);*/
}
}
import java.util.List; public class Brand {
private int id;
private String name;
private List<String>types; public Brand() {
} public Brand(int id, String name, List<String> types) {
this.id = id;
this.name = name;
this.types = types;
} public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getTypes() {
return types;
}
public void setTypes(List<String> types) {
this.types = types;
}
@Override
public String toString() {
return this.name+this.types;
} }
---恢复内容结束---
Dom4jDemo应用-保存手机信息的更多相关文章
- Android_ 重写系统Crash处理类,保存Crash信息到SD卡 和 完美退出程序的方法
转载时注明地址:http://blog.csdn.net/xiaanming/article/details/9344703 我们开发Android应用的时候,当出现Crash的时候,系统弹出一个警告 ...
- 使用 python 提取照片中的手机信息
使用 python 提取照片中的手机信息 最近在做一个项目,有一个很重要的点是需要获取使用用户的手机信息,这里我选择从照片中获取信息.有人会问为什么不从手机里面直接获取设备信息.由于现在android ...
- day101:MoFang:模型构造器ModelSchema&注册功能之手机号唯一验证/保存用户注册信息/发送短信验证码
目录 1.模型构造器:ModelSchema 1.SQLAlchemySchema 2.SQLAlchemyAutoSchema 2.注册功能基本实现 1.关于手机号码的唯一性验证 2.保存用户注册信 ...
- iOS 整理笔记 获取手机信息(UIDevice、NSBundle、NSLocale)
/* iOS的APP的应用开发的过程中,有时为了bug跟踪或者获取用反馈的需要自动收集用户设备.系统信息.应用信息等等,这些信息方便开发者诊断问题,当然这些信息是用户的非隐私信息,是通过开发ap ...
- 保存登录信息的Cookie加密技术
所有需要账户登录的website 基本都会想到这样一个问题, 如何保持用户在一定时间内登录有效. 最近本人就在项目中遇到这样的需求,某些页面只能Admin账户登录后访问, 当登录Admin账户后如何才 ...
- 以下是关于ASP.NET中保存各种信息的对象的比较,理解这些对象的原理,对制作完善的程序来说是相当有必要的(摘至互联网,并非原创--xukunping)
在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么? 为了 ...
- 【风马一族_Android】Android 从命令行界面获取手机信息
Android 从命令行界面获取手机信息 1: cmd 打开命令行界面 2:adb devices 获取与电脑相连的设备,例如:模拟器.真机(手机) (右击“标记”,选择设备名称,点击“Ctrl+ ...
- Android实战技巧之十九:android studio导出jar包(Module)并获得手机信息
AS中并没有独立的Module 工程,可是能够在普通的Project中增加Module.所谓的Module就是我们通常所指的模块化的一个单元.并经常以jar包的形式存在.以下以一个获取手机信息的样例演 ...
- python+adb实现自动化获取手机信息
首先我们先看一下使用adb查看Android手机信息的指令 #获取手机名称NAME = 'adb shell getprop ro.product.model'#获取手机版本VERSION = 'ad ...
随机推荐
- springboot与dubbo结合
转:http://www.cnblogs.com/Alandre/p/6490142.html 写的很好! 本文提纲 一.为啥整合 Dubbo 实现 SOA 二.运行 springboot-dubb ...
- Springmvc 流程图
- linux编译动态库 fPIC作用
在生成动态库时,常常习惯性的加上fPIC选项,fPIC有什么作用和意义,加不加有什么区别,这里做下小结: fPIC的全称是 Position Independent Code, 用于生成位置无关代码. ...
- [转]使用 LDAP 组或角色限制访问,包含部分单点登录SSO说明
参考:http://www-01.ibm.com/support/knowledgecenter/api/content/SSEP7J_10.2.2/com.ibm.swg.ba.cognos.crn ...
- bzoj 2190 线性生成欧拉函数表
首先我们知道,正方形内个是对称的,关于y=x对称,所以只需要算出来一半的人数 然后乘2+1就行了,+1是(1,1)这个点 开始我先想的递推 那么我们对于一半的三角形,一列一列的看,假设已经求好了第I- ...
- 【mysql优化】大数据量分页优化
limit 翻页原理 limit offset,N, 当offset非常大时, 效率极低, 原因是mysql并不是跳过offset行,然后单取N行, 而是取offset+N行,返回放弃前offset行 ...
- JSP页面中格式化日期为指顶格式
有时候在页面中显示直接从数据库获取的日期时候会出现英文的日期格式.比如:
- Flask 基础知识一
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后 ...
- shell整数加法
http://blog.csdn.net/ll_0520/article/details/5959577 #plus #!/bin/sh let a=$1+$2 b=$[$1+$2] ((c=$1+$ ...
- Map占用内存大小评估
public class test { private static java.util.HashMap<String, String> needQueryResProductList = ...