java xml 学习_java学习(四)xml

1.xml文件

xml(可扩展标签语言,标签自定义,用来存储数据以及配置文件)。书写规范为:

1)区分大小写;

2)应该有一个跟标签;

3)标签必须关闭;如

4)属性必须用引号引起来;如:

5)标签体重的空格或者换行制表符等内容都是作为数据内容存在的;

6)特殊字符必须使用转义,如< > &等。可以使用sdataky保证数据的原样输出。格式为:

此处为需要原样输出的文件内容

]]>

2.xml文件解析

常用解析方式为dom4j解析开发包,使用步骤如下:

1)导入jar包;

2)创建一个核心对象SAXReader;

new SAXReader();

3)将xml文档加载到内存中形成一棵树;

Document doc = reader.read(文件);

4)获取根节点;

Element root = doc.getRootElement();

5)通过根节点就可以获取其他节点(文本节点,属性节点和元素节点)

1.获取所有的子元素

List list = root.elements();

2.获取元素的指定属性内容

String value = root.attributeValue("属性名");

3.获取子标签标签体:遍历list,获取到每一个子元素

String text = ele.elementText("子标签名称");

具体事例如下:

import java.util.List;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

public class Dom4jDemo {

public static void main(String[] args) throws DocumentException {

//创建核心对象

SAXReader reader = new SAXReader();

//获取dom树

Document doc = reader.read("C:\\*****\\JDBC4\\xml\\web.xml");

//获取根节点

Element root = doc.getRootElement();

//获取其他节点

List list = root.elements();

//遍历集合

for(Element ele:list) {

//获取servlet-name的标签提

String text = ele.elementText("servlet-name");

System.out.println(text);

}

//获取root的version属性

String value = root.attributeValue("version");

System.out.println(value);

}

}

3.反射

执行步骤如下所示。

3.1 获取响应的class对象

方式一:Class newClass = Class.forName("全限定名");

方式二:Class newClass = 类名.class;

方式三:Class newClass = 对象.getClass();

3.2 创建实例对象

通过class对象创建一个实例对象,相当于"new 类()";

Object newClass.newInstance();

3.3 获取方法

通过class对象获取一个方法:

Method method = newClass.getMethod("方法名",Class ... paramType);

其中:paramType为参数的类型;

3.4执行方法

格式为:

method.invoke(Object 实例对象,Object ... 参数);

Object 实例对象:以前调用方法的对象;

Object ... 参数:该方法运行时需要的参数

public class Demo {

@Test

public void f1() throws Exception {

//定义一个map

HashMap map = new HashMap<>();

//往map中放入一个值

map.put("/hello", "cn.itcast.reflect.HelloMyServlet");

//通过key获取value

String value = map.get("/hello");

//通过全限定名创建一个实例

Class newClass = Class.forName(value);

HelloMyServlet a = (HelloMyServlet) newClass.newInstance();

//调用空参的add方法

Method m = newClass.getMethod("add");

m.invoke(a);

}

@Test

public void f2() throws Exception {

//解析xml

//创建document对象

Document doc = new SAXReader().read("C:\\Users\\lu\\Documents\\GitHub\\Learning-Java\\JDBC4\\xml\\web.xml");

//通过xpath解析获取servlet-calss和url-pattern的标签体

Element servletClass = (Element) doc.selectSingleNode("//servlet-class");

Element urlPattern = (Element) doc.selectSingleNode("//url-pattern");

String classText = servletClass.getText();

String urlText = urlPattern.getText();

//定义一个map

HashMap map = new HashMap<>();

//将两个值放入到map中

map.put(urlText, classText);

//往map中放入一个值

//map.put("/hello", "cn.itcast.reflect.HelloMyServlet");

//通过key获取value

String value = map.get("/hello");

//通过全限定名创建一个实例

Class newClass = Class.forName(value);

HelloMyServlet a = (HelloMyServlet) newClass.newInstance();

//调用空参的add方法

Method m = newClass.getMethod("add");

m.invoke(a);

}

4 xml约束

xml约束规定xml中出现哪些元素以及属性,以及出现的顺序;

约束的分类:

1)DTD约束:struts hibernate等等;

2)SCHEMA约束:tomcat spring等等

4.1 DTD约束

和xml关联有三种方式:

1)内部关联

2)外部关联—系统关联

如:

3)外部关联—公共关联

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值