XML

一、什么是XML:

Xml 的全称为 Extensiable Markup Language, 意思是可扩展的标记语言
XMl 的语法上和 HTML 比较相似,但是 html 标签都是规定好了的,而 XML 是可以随意定义标签的。

二、XML常见用法

用法一:存放配置文件


用法二:存储数据

很多应用程序会使用xml个来存放数据,比如我们用过的powerdesiner

用法三:传输数据

我们知道使用不同语言开发程序之间是不能够直接交流的,我们需要介入一种约定的协议来完成不同系统之间的交互。一直比较主流的就是通过发布webservice的方式来暴露自己的本系统的功能。外部程序可以使用别的程序暴露的webservice来访问。那么webservice使用的是soap协议,相互之间传递的数据就是XML格式的文档数据。

三、XML语法:

①头部声明 XML 文档 ( 必须的 )
<?xml version="1.0" encoding="UTF-8" language=”java”?>
文档必须以 <?xml  ...  ?> 开始 , 并且必须放到文档的开头。不允许出现任何其他的干扰字符。文档声明部分只有三个属性: version encoding language, 注意其中 version 是必须的。

四、Dom4J解析XMl文档

XML的文档结构理解

XML 可以从根节点开始,一层一层的抓出一颗树形的节点结构。我们称之为 DOM 树。
简介
当数据被存在 xml 文件后,如果我们想要用到里面的数据需要通过程序获取文件内容,解析出我们想要的数据,如果使用我们目前所学习的知识,我们只能使用 IO 流来完成读取文件,然后通过一些复杂的判断来获取文档里面的数据。这样的常用的文档格式,一定会有一些懒人来封装一些方便的工具。那么针对 XML 文档我们有 DOM4J,sax 这个工具包来帮助我们从复杂的 XML 文档解析中解脱出来。
Dom 解析器方式
我们介绍两种 dom 解析器 ,dom4j 解析器和 SAX 解析器。
Dom4j 会把所有文档一次性的读取到内存里,形成一个完整的 DOCUMENT 对象。
优点:元素之间有结构关系,可以进行节点的增删改查。
缺点:文档过大时候内存容易溢出。
SAX: 一边读一边解析,逐行扫描文档,读一行解析一行,并以事件驱动的方式进行解析,这种方式速度快,但是只能对文档进行读取,不能修改节点信息。
常用API
//定义一个SAXReader 用于将文档读取到内存中
      SAXReader saxReader = new SAXReader();
    //读取XMl文档组装成文档Document
        Document doc = saxReader.read(is);
//获取根节点
Element rootElement = doc.getRootElement();
    //获取节点的标签名(tagname)
        String typeName = rootElement.getName();    
//获取当前节点的所有子节点
        List<Element> list = rootElement.elements();
//根据标签名获取一个子节点
        Element defaultConfigEle = rootElement.element("default-config");
//读取属性
            String propertyName = ele.attributeValue("name");
//读取节点文本内容
            String propertyValue = ele.getText();   
//另一种方式读取节点内容
        String targetEleText = defaultConfigEle.elementText("tebiede");
Xml 除了存储数据配置文件以外还经常被我们用来存 javabean 和数据字段之间的关系,当查询数据库时候我们可以根据 xml 文档来将查询到的结果节方便的翻译成 java 对象。
将我们的 select 查询来用 xml 文档来简化字段对应。
五、JAVA反射
先观察我们的的select语句将,将结果集转换成对象的过程是多么的的麻烦,并且机械化,无脑。虽然我们用xml来对应了bean属性和数据库字段间的关系。但是还是不够灵活。那么使用反射就能解决这个问题。
①什么是反射:
1.Java的反射机制是在运行状态中,对任意一个类都能够知道这个类的所有属性和方法。对于任意一个对象我们都能调用他的任意一个方法。
2.    使用反射我们可以再运行时对类Class,构造方法Constructor,普通方法Method,字段feild进行操作。
②Class对象
Class对象是对Class字节码文件进行描述的对象。
获取类型对象的方法是Class.forName(“全路径”);
String.class类名点class获取类对象。obj.getClass(),通过实例化对象获取类型对象。
②构造方法对象Contructor
获公共取构造方法
Constructor ct = class.getConstructor(String.class);
创建实例对象
class.newInstance();
③Method对象
Mehtod对象是对类中的普通方法的描述。
根据方法名和方法参数描述来获取方法
class.getMethod("gogogo",String.class,Integer.class);(获取公共方法包括父类)
class.getDeclaredMethod("gogogo",String.class,Integer.class);(获取所有本类中声明的)
class.getMethods();获取所有公共方法包含父类
class.getDeclaredMethods();获取本类中声明的方法
执行方法 method.invoke(实例对象,参数列表);
④Feild对象
Field对象是对java类中定义的字段属性进行描述。
Field f = class.getField("属性名");获取公共属性包括父类
Field[] fs = class.getFields();获取公共属性包括父类
Field f1 = class.getDeclaredField("属性名");获取本类中声明的属性
Field[] fs1 = class.getDeclaredFields();获取本类中声明的属性
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值