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 ...
随机推荐
- OWNER:Java配置文件解决方案 使用简介
这个感觉还是很方便的一个工具. 学习网站是:http://hao.jobbole.com/owner/ 测试步骤: 1.pom <dependency> <groupId>o ...
- org.apache.http.conn.HttpHostConnectException: Connection to xxx refused.
if you are using emulator to run your app for local server. mention the local ip as 10.0.2.2 and hav ...
- bzoj2161: 布娃娃
Description 小时候的雨荨非常听话,是父母眼中的好孩子.在学校是老师的左右手,同学的好榜样.后来她成为艾利斯顿第二 代考神,这和小时候培养的良好素质是分不开的.雨荨的妈妈也为有这么一个懂事的 ...
- RGB颜色原理
参考:http://www.cnblogs.com/harrytian/archive/2012/12/12/2814210.html 工作中经常和颜色打交道,但却从来没有从原理上了解一下,这篇文章希 ...
- 【洛谷 P1651】 塔 (差值DP)
题目链接 题意:\(n\)个木块放到两个塔里,每个木块可放可不放,使得两塔高度相同且高度最大,求最大高度. 这个差值\(DP\)的思维难度还是很大的,没想出来,我就打了一个\(dfs\)骗了好像\(2 ...
- [bzoj2049][Sdoi2008]Cave 洞穴勘测——lct
Brief Description 给定一个森林,您需要支持两种操作: 链接两个节点. 断开两个节点之间的链接. Algorithm Design 对于树上的操作,我们现在已经有了树链剖分可以处理这些 ...
- HDU1083(二分图最大匹配vector实现)
Courses Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- python 使用装饰器并记录log
1.首先定义一个log文件 # -*- coding: utf-8 -*- import os import time import logging import sys log_dir1=os.pa ...
- classNotFound修复
万恶的这个bug,也是经常遇见,每一次都是在反复检查完代码之后并没有发现错误,然后开始上网百度,发现也并没有一个准确的解答.在此给出我的个人的修复bug的过程. 1.首先我是遇到了找不到entity中 ...
- hammer.js触摸,手指缩放等许多手势操作
使用方法: 插件描述:Hammer.js是一个开源的,轻量级的javascript库,它可以在不需要依赖其他东西的情况下识别触摸,鼠标事件. <script src="http://e ...