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文件是程序员开发的。但是框架师要定义约束。
约束有两种:
1:DTD约束
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文件是一般的文本文件。
2:XSD约束
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的解析方式
1:jaxp-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();
//设置cls的name
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);
}
再次声明我的资料全部来自我师王建老师- xml(简单的说一下xml)
- 说一下Spring的applicationContext.xml的配置文件
- 简单了解一下xml
- web.xml简单介绍一下
- 各位大虾能说一下你们用XML经验吗?
- Unity项目中用到了xml,总结一下创建使用xml文件的简单用法
- 今天简单说一下cdc 的使用
- 简单说一下RecyclerView
- 简单的XML留言板
- 简单的 XML 读取
- 简单的XML服务器
- 一个简单的XML
- 简单的XML留言板
- xml的简单操作
- 简单的xml读写
- XML的简单运用
- xml的简单了解
- xml的简单解释
- Android设计模式之单例模式
- C++之封装
- Android小程序-简易计算器的实现
- ajax基础
- Android官方开发文档Training系列课程中文版:通过NFC共享文件之从其它设备接收文件
- xml(简单的说一下xml)
- 第七周项目1—两点间的距离(一般函数)
- 共享内存的特殊文件系统
- android Xml文件引用资源中@和?的区别
- 形状的周长与面积
- hdu3038 How Many Answers Are Wrong--种类并查集
- Word转PDF图像失真的解决方法
- C语言基础
- RocketMQ 的疑惑--131072 数字解答