浅析java XML文件

这学期选了软件设计模式这个课程,在学习“工厂模式”时,老师让我们课下学习XML和Class,这篇文章,简单的总结了一下我学习XML中用DOM的方式解析的过程,表述不完善或不恰当的地方,还请保函和指正。

XML文件

现在流行的解析XML文件的方法有很多,主流的有四种DOM、SAX、JDOM和DOM4J,由于JDK自带DOM的解析包,我就只试了第一种。

首先来看一下编写XML文件,可以通过命令来写,也可以直接编辑XML文件,并把编写好的XML文件放在工作目录下。

 

XML的存储结构为树;其实每次我们获取的就是树节点的内容,文件框架是:

 

<?xml version=”1.0” encoding=”UTF-8”?>   //同用语句

<节点名>

                        <节点名>

                        …….//可以不断嵌套

                        </节点名>

</节点名>

 

我们就上面这张图来写一下XML文件

<?xml version=”1.0” encoding =“UTF-8”?>

<Class>

            <info>美女</info>//在树中是同一级的缩进相同,例如这里的info与student

            <student>       //嵌套子节点

     <Name>小乔</Name> 

//实例写在节点之间,也可以写成<Name id=”小乔”></Name>

     <sex>女</sex>

     <age>21</age>

</student>

</Class>

 

编辑完了XML文件,我们就来开一下如何解释并访问XML文件,

以上是通过DOM来解析文件的代码,我们直接把它写在一个类里(通用),其中parse方法就是我们真正用到的解释文件的方法,返回类型是Document。

下面开始编写我们自己的文件,(还是以树图的例子)

XML文件的内容有三种类型

Text:

Element:

public static void main(String[] args) {

         DOMParserparser = new DOMParser();

         Document document = parser.parse("Filename(文件名).xml");

         //parse的返回对象是Document,赋予一个引用对象

           //从根节点开始读,每一个<>节点的类型都是Element

         ElementrootElement = document.getDocumentElement();

         //traversechild elements

         NodeListnodes = rootElement.getChildNodes();

//每一个节点都有一个getChildNodes()的方法,将所有的子节点返回到一个NodeList当中

         for (inti=0; i < nodes.getLength(); i++)

//每一个节点列表对象都有一个getLength()的方法,返回其中的节点数,用于遍历。

         {

Node node = nodes.item(i);

//要访问具体的哪一个子节点,我们是用的是节点中item(i)方法,i=0,1,2…node.getLength();

//接下来,看看如何返回节点名和节点值;

String nodename=node.getNodeName();//返回节点名

Stringnode=node.getNodeValue();//如果在这里对应我们之前编写的xml文件会返回一个null,原因是我们并没有把具体的值放进<>里,而是把它当成了一个子节点,例如xml文件中的‘小乔’,因此对应的Name这个节点的值其实为null。

//要想访问‘小乔’这个值,我们把‘小乔’再赋给一个节点,再用getNodeValue()的方法返回一个值就可以了。如果不想那么麻烦,就改写xml文件,把Name,sex,age当成student的属性,这样就可以通过访问属性值的方法返回具体的值。

            }

         }

 

NodeList nodeList=rootElement.getElementsByTagName("book");

        if(nodeList != null)

         {

            for(int i = 0 ; i < nodeList.getLength(); i++)

            {

              Element element = (Element)nodeList.item(i);

              String id = element.getAttribute("id");

            }

         }

   }

 }

学习文件:http://www.ibm.com/developerworks/cn/xml/dm-1208gub/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值