初学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

 1 import java.io.File;
 2
 3 import javax.xml.parsers.DocumentBuilder;
 4 import javax.xml.parsers.DocumentBuilderFactory;
 5
 6 import org.w3c.dom.*;
 7
 8
 9 public class XMLUtil {
10     //初始化手机内存的信息,传入的值全都在config.xml文件中
11     public static void initPhone(){
12         try{
13             //创建DOM文档对象
14             DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
15             DocumentBuilder builder = dFactory.newDocumentBuilder();
16             Document doc = builder.parse(new File("config.xml"));
17
18             //获取包含类的节点
19             NodeList nl = doc.getElementsByTagName("address");
20             for(int i=0 ; i<nl.getLength() ; i++){
21                 Element element = (Element)nl.item(i);
22                 Address address = new Address();
23                 NodeList childNodes = element.getElementsByTagName("val");
24                 address.setMsg(childNodes.item(0).getFirstChild().getNodeValue());
25                 Phone.addAddress(address);
26             }
27
28             nl = doc.getElementsByTagName("note");
29             for(int i=0 ; i<nl.getLength() ; i++){
30                 Element element = (Element)nl.item(i);
31                 Note note = new Note();
32                 NodeList childNodes = element.getElementsByTagName("val");
33                 note.setMsg(childNodes.item(0).getFirstChild().getNodeValue());
34                 Phone.addNote(note);
35             }
36
37             nl = doc.getElementsByTagName("photo");
38             for(int i=0 ; i<nl.getLength() ; i++){
39                 Element element = (Element)nl.item(i);
40                 Photo photo = new Photo();
41                 NodeList childNodes = element.getElementsByTagName("val");
42                 photo.setMsg(childNodes.item(0).getFirstChild().getNodeValue());
43                 Phone.addPhoto(photo);
44             }
45
46             nl = doc.getElementsByTagName("music");
47             for(int i=0 ; i<nl.getLength() ; i++){
48                 Element element = (Element)nl.item(i);
49                 Music music = new Music();
50                 NodeList childNodes = element.getElementsByTagName("val");
51                 music.setMsg(childNodes.item(0).getFirstChild().getNodeValue());
52                 Phone.addMusic(music);
53             }
54         }catch(Exception e){
55             e.printStackTrace();
56         }
57     }
58     public static void main(String [] args){
59         initPhone();
60         Phone.show();
61     }
62 }

剩下有兴趣可以在这得到源代码:http://pan.baidu.com/s/1pJZlLB9

时间: 2024-10-04 11:26:05

初学DOM树解析xml文件的相关文章

通过Dom方式解析xml文件

此项目通过简单的天气情况显示来实现xml文件的解析 1. 搭建环境 1)创建如下图的包.类及文件 2)布局文件的大概样式如下图所示,用到四个TextView控件和一个RadioGroup控件 3)china.xml文件的内容如下 <?xml version="1.0" encoding="UTF-8"?> <china dn="day"> <city cityname="南京" pyName=&q

android如何使用DOM来解析XML文件

对于以下的xml文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <books> <book email="zhoujunhui&quo

DOM方式解析xml文件查看天气

1.步骤: ①创建文档解析器的工厂对象 ②得到文档解析器对象 ③获取输入流对象 ④通过解析器的parse方法解析is对象 转换成Document对象 ⑤返回的是文档的根节点 ⑥判断是否有孩子节点进行获取子节点转换成元素节点得到属性节点 ⑦得到具体的某个属性节点 2.解析元素节点.属性节点.文本节点: 3.界面搭建 界面搭建的相关代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

在iOS 开发中用GDataXML(DOM方式)解析xml文件

因为GDataXML的内部实现是通过DOM方式解析的,而在iOS 开发中用DOM方式解析xml文件,这个时候我们需要开启DOM,因为ios 开发中是不会自动开启的,只有在mac 开发中才自动开启的.我们需要做如下配置: 当配置玩这个操作之后,再次进行编译的时候,系统还是报错,是因为我们还需要进行如下操作:

[学习手记] Java中利用DOM方法解析XML文件

需求分析: 在做一个利用API的小东西时需要对返回的XML格式的数据进行解析 详见文章: [开发手记] 一款基于命令行的英英词典 (A CLI-Based EE Dictionary) 项目地址: https://github.com/hwding/seekDict 准备工作: 阅读Documentation 查阅相关代码 读入XML文件到程序内: 首先用DocumentBuilderFactory生成一个DocumentBuilder实例 DocumentBuilder docmumentBu

dom方式解析xml文件的步骤

Java解析XML文件的方式

在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求.一般来讲,有基于DOM树和SAX的两种解析xml文件的方式,在这部分里,将分别给大家演示通过这两种方式解析xml文件的一般步骤. 1 XML的文件格式     XML是可扩展标记语言(Extensible Markup Language)的缩写,在其中,开始标签和结束标签必须配套地出现,我们来看下book.xml这个例子. 1 <?xml version=

DOM解析XML文件

除了可以使用SAX解析XML文件,大家也可以使用熟悉的DOM来解析XML文件. DOM解析XML文件时,会将XML文件的所有内容读取到内存中,然后允许您使用DOMAPI遍历XML树.检索所需的数据.使用DOM操作XML的代码看起来比较直观,并且,在某些方面比基于SAX的实现更加简单.但是,因为DOM需要将XML文件的所有内容读取到内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小

50.使用DOM4J解析XML文件

需要导入dom4j-1.6.1.jar 收藏信息.xml <?xml version="1.0" encoding="GBK"?> <PhoneInfo> <Brand name="华为"> <Type name="U8650"/> <Type name="HW123"/> <Type name="HW321"/>