初学DOM树解析xml文件
做了一次设计模式实验的题目:
某软件公司为新开发的智能手机控制与管理软件提供了一键备份功能,通过该功能可以将原本存储在手机中的通信录、短信、照片、歌曲等资料一次性全部拷贝到移动存储介质(例如MMC卡或SD卡)中。在实现过程中需要与多个已有的类进行交互,例如通讯录管理类、短信管理类等,为了降低系统的耦合度,试使用外观模式来设计并编程模拟实现该一键备份功能。
我自己在这道题目中构建了MMC,SD继承了abstract class的AbstractCard类,这样方便以后继续增加外接卡
对于通信录、短信、照片、歌曲四个属性我也都有各自的类并只给了msg作为对应文件的文件名,然后将初始手机内拥有的文件信息用config配置
<?xml version="1.0" encoding="UTF-8"?>
<config>
<address>
<val>Jack</val>
</address>
<address>
<val>Mike</val>
</address>
<note>
<val>care for raining!</val>
</note>
<photo>
<val>tiger</val>
</photo>
<photo>
<val>cat</val>
</photo>
<music>
<val>complicated-Avril</val>
</music>
</config>
config.xml
然后自己就是要解析这个xml放入手机Phone类中保存,然后在实施一键复制
这里主要是为了学习xml解析,顺便贴了自己写整道题目的代码:xmlDOM解析学习的网站
解析就时在XMLUtil.java代码中,这里有个测试的main得到结果:
这是Phone内存中的文件:
下方显示通讯录信息:
Jack
Mike
下方显示短信信息:
care for raining!
下方显示照片信息:
tiger
cat
下方显示歌曲信息:
complicated-Avril
import java.io.File; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.*; public class XMLUtil {
//初始化手机内存的信息,传入的值全都在config.xml文件中
public static void initPhone(){
try{
//创建DOM文档对象
DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dFactory.newDocumentBuilder();
Document doc = builder.parse(new File("config.xml")); //获取包含类的节点
NodeList nl = doc.getElementsByTagName("address");
for(int i=0 ; i<nl.getLength() ; i++){
Element element = (Element)nl.item(i);
Address address = new Address();
NodeList childNodes = element.getElementsByTagName("val");
address.setMsg(childNodes.item(0).getFirstChild().getNodeValue());
Phone.addAddress(address);
} nl = doc.getElementsByTagName("note");
for(int i=0 ; i<nl.getLength() ; i++){
Element element = (Element)nl.item(i);
Note note = new Note();
NodeList childNodes = element.getElementsByTagName("val");
note.setMsg(childNodes.item(0).getFirstChild().getNodeValue());
Phone.addNote(note);
} nl = doc.getElementsByTagName("photo");
for(int i=0 ; i<nl.getLength() ; i++){
Element element = (Element)nl.item(i);
Photo photo = new Photo();
NodeList childNodes = element.getElementsByTagName("val");
photo.setMsg(childNodes.item(0).getFirstChild().getNodeValue());
Phone.addPhoto(photo);
} nl = doc.getElementsByTagName("music");
for(int i=0 ; i<nl.getLength() ; i++){
Element element = (Element)nl.item(i);
Music music = new Music();
NodeList childNodes = element.getElementsByTagName("val");
music.setMsg(childNodes.item(0).getFirstChild().getNodeValue());
Phone.addMusic(music);
}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String [] args){
initPhone();
Phone.show();
}
}
剩下有兴趣可以在这得到源代码:http://pan.baidu.com/s/1pJZlLB9
初学DOM树解析xml文件的更多相关文章
- 用JAXP的dom方式解析XML文件
用JAXP的dom方式解析XML文件,实现增删改查操作 dom方式解析XML原理 XML文件 <?xml version="1.0" encoding="UTF-8 ...
- 在iOS 开发中用GDataXML(DOM方式)解析xml文件
因为GDataXML的内部实现是通过DOM方式解析的,而在iOS 开发中用DOM方式解析xml文件,这个时候我们需要开启DOM,因为ios 开发中是不会自动开启的,只有在mac 开发中才自动开启的.我 ...
- Java-Web DOM方式解析xml文件
XML DOM 树形结构: DOM 节点 根据 DOM,XML 文档中的每个成分都是一个节点. DOM 是这样规定的: 整个文档是一个文档节点 每个 XML 元素是一个元素节点 包含在 XML 元素中 ...
- XML:使用DOM技术解析xML文件中的城市,实现select级联选择
中国的城市xml格式:cities.xml <?xml version="1.0" encoding="utf-8"?> <china> ...
- Java&Xml教程(二)使用DOM方式解析XML文件
DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象.遍历元素和节点不需要按照顺序进行. DOM解析方式适合尺寸较小的X ...
- DOM方式解析XML文件实例
books.XML文件: <?xml version="1.0" encoding="utf-8"?><bookstore> &l ...
- dom方式解析xml文件的步骤
使用java类即可
- Java解析XML文件的方式
在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求.一般来讲,有基于DOM树和SAX的两种解析xml文件的方式 ...
- 【TensorFlow】Python解析xml文件
最近在项目中使用TensorFlow训练目标检测模型,在制作自己的数据集时使用了labelimg软件对图片进行标注,产生了VOC格式的数据,但标注生成的xml文件标签值难免会产生个别错误造成程序无法跑 ...
随机推荐
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数008,matrix,矩阵函数
** 3dFromFundamentalMatrix( Rows1, Cols1, Rows2, Cols2, CovRR1, CovRC1, CovCC1, CovRR2, CovRC2, CovC ...
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数·简明中文手册 总览
<zw版·Halcon-delphi系列原创教程> Halcon分类函数·简明中文手册 总览 Halcon函数库非常庞大,光HALCONXLib_TLB.pas文件,源码就要7w多行,但核 ...
- yield return的作用
测试1: using UnityEngine; using System.Collections; public class test1 : MonoBehaviour { // Use this f ...
- Android中AIDL通信机制分析
一.背景 ·1.AIDL出现的原因 在android系统中,每一个程序都是运行在自己的进程中,进程之间无法进行通讯,为了在Android平台,一个进程通常不能访问另一个进程的内存空间,所以要想对话,需 ...
- Map.Entry
Map.Entry Map是java中的接口,Map.Entry是Map的一个内部接口. Map提供了一些常用方法,如keySet().entrySet()等方法,keySet()方法返回值是Map中 ...
- maven+swagger
maven+swagger 构建restful风格的应用服务确实很好用 maven来管理jar包 swagger提供接口文档和测试接口
- 用NULL布局为什么不能显示
import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing. ...
- ADB指令
对于ADB指令的应用,首先应该配置环境,将文件所在路径复制到高级系统设置里面的环境变量path,然后就可以在命令符上进行ADB的指示 例如adb kill-server是关掉活动 adb start- ...
- Linux phpwind论坛的安装
1:新建文件夹phpwind
- WebForm水印照片
水印照片需要的元素 绘制:1.画布2.画笔 样式 粗细 颜色3.画什么东西4.用什么字体画 大小5.位置 展示页面 <%@ Page Language="C#" AutoEv ...