xml(简单的说一下xml)

来源:互联网 发布:苹果mac下载office 编辑:程序博客网 时间:2024/04/27 11:21

xml的基本定义

3:XML – eXtend Markup Language 可扩展标记语言 – 声明

 

功能:

   用户自己定义元素,表示有结构的数据。

 

在目前的程序里面,都使用xml做为配置选项。

 

XML文件,

  就是一个文本文件。

  通常以*.xml为结束。

  里面的格式根据XML规范来声明。

 

1:声明一个最基本的XML

 

 

 

2:XML文件是用于表达有逻辑结构的数据的

还有的就是简单的了解一下约束

DTD

约束里面可以有什么元素,及它的声明顺序。

 

所以XML文件是程序员开发的。但是框架师要定义约束。

 

约束有两种:

  1DTD约束

      DTD – Document(文档) Type(类型) Defination(定义)

    

<!ELEMENT clses (cls+)>

<!ELEMENT cls (stud*)>

<!ATTLIST cls nameCDATA #REQUIRED>

<!ELEMENT stud (name,age,addr?)>

<!ATTLIST stud idID #REQUIRED>

<!ELEMENT name (#PCDATA)>

<!ELEMENT age (#PCDATA)>


      DTD文件是一般的文本文件。

  

  2XSD约束

     XML Schema(命名空间) Defination 使用命名空间的方式来约束XMl文件

 

     Xsd文件是一个XML文件。

这些简单的了解即可我主要探讨的还是解析还有就是封装

先来说一下的就是解析分为‘

XML解析两大种:

  1官方解析 jaxp - > Java API for XML Process

        Jaxp-dom Document Object Model – 文档对象模型

        Jaxp-sax - > Simple Api for XML

        Jaxp-StAX - > Stream API for XML – 流的方式 – 大量用于android

  2:第三解析

      Jdom

      Dom4j – 第三方解析

下面我就简单的来说一下

jaxp-dom的解析方式

1jaxp-dom的核心类

 

 

Org.w3…Doument

表示整个文档对象

 

Org.w3…Element

元素

  <stud>

  <name>

   Jack – 文本元素

 

DocumentBuilder

有于读取XML文件的

返回Document对象






下面的就是解析步骤

package cn.demo03;

 

import java.io.File;

 

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

 

import org.junit.Test;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.NodeList;

 

public class Demo04_Jaxp_Dom {

@Test

public void testParseXML()throws Exception {

// 1:创建读取XMl的对象

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();//这里是一开始声明就是实例化

DocumentBuilder db =dbf.newDocumentBuilder();

// 2:读取文件返回一个DOM对象

Document dom =db.parse(new File("./xmls/citis.xml"));

// 3:读取里面所有的<pre>元素

NodeList list =dom.getElementsByTagName("pre");。//这个意思得到属性的标签bytagName//elements属性意思

//4:遍历每一个省

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

System.err.println("---------------"+(i+1)+"个省信息-------------------------------");

//获取每个<pre>元素

Element ele =  (Element)list.item(i);

//获取这个元素上面的属性

String preName =  ele.getAttribute("name");

 

System.err.println(":"+preName);

//5:解析这个元素里面的子元素<city>

NodeList list2 =ele.getElementsByTagName("city");//解析这个node集合

System.err.println("-------------------------------------------------------------");

for(int j=0;j<list2.getLength();j++){

//获取每一个city

Element ele2 = (Element)list2.item(j);

String cityName =ele2.getTextContent();

System.err.println("市:"+cityName);

这里需要理解的是nodelist的本质并不是集合类

这里可以百度一下

还有就是封装baocun

@Test

public void testPack()throws Exception {

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();

Document dom =db.parse(new File("./xmls/clses.xml"));

// 1:读取所有cls元素

NodeList list1 =dom.getElementsByTagName("cls");

// 声明一个集合,用于放cls Bean

List<Cls> list2 =new ArrayList<Cls>();

// 遍历list1,因为里面都是节点

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

//获取每个<cls>元素

Element ele = (Element)list1.item(i);

//每一个<cls>元素,都应该是一个JavaBean - newCls

Cls cls =new Cls();

//设置clsname

cls.setName(ele.getAttribute("name"));

//读取这个cls下的所有<stud>节点

NodeList studList =ele.getElementsByTagName("stud");

//遍历这个cls下的所有<stud>节点

for(int j=0;j<studList.getLength();j++){

Element e2 = (Element)studList.item(j);

//每一个<stud>节点,都是一个学生

Stud stud =new Stud();

stud.setId(e2.getAttribute("id"));

stud.setName(e2.getElementsByTagName("name").item(0).getTextContent());

stud.setAge(Integer.parseInt(e2.getElementsByTagName("age").item(0).getTextContent()));

NodeList addrs =e2.getElementsByTagName("addr");

if(addrs.getLength()>0){

String add =addrs.item(0).getTextContent();

stud.setAddr(add);

}

//将每一个学生添加到当前的班中去

cls.getStuds().add(stud);

}

//封装完成以后,将cls对象放到list2

list2.add(cls);

}

再次声明我的资料全部来自我师王建老师



0 0
原创粉丝点击