java xml配置文件
Posted 呐呐呐那
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java xml配置文件相关的知识,希望对你有一定的参考价值。
XML
类似于properties的配置文件,全名是Extensible Markup Language,意思是可扩展的标记语言。XML语法上和html比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的
语法:文档声明必须以<?xml开头,以?>结尾
文档是声明必须是0行0列
3.文档声明只有属性:
a) versioin:指定XML文档版本。必须属性,因为我们不会选择1.1,只会选择1.0;
b) encoding:指定当前文档的编码。可选属性,默认值是。utf-8
xml有2种规范,一种DTD,一种是Schema
DTD:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE web-app SYSTEM "web-app_2_3.dtd"> //把DTD规范放到同一个包下,然后把这句话放到自己的xml文件里,标签必须是成对的 3 <web-app> 4 <servlet> 5 <servlet-name>MyServer</servlet-name> 6 <servlet-class>com.oracle.demo03.person</servlet-class> 这里写要操作类的路径 7 </servlet> 8 <servlet-mapping> 9 <servlet-name>MyServer</servlet-name> 10 <url-pattern>/hello</url-pattern> 11 </servlet-mapping> 12 </web-app>
Scheam比DTD更强大,文件的扩展名是xsd,支持命名空间
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="http://www.example.org/web-app_2_5" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd" 5 version="2.5"> 6 <servlet> 7 <servlet-name></servlet-name> 8 <servlet-class></servlet-class> 9 </servlet> 10 <servlet-mapping> 11 <servlet-name></servlet-name> 12 <url-pattern></url-pattern> 13 </servlet-mapping> 14 </web-app>
用法和DTD差不多
XML解析
1.通过解析器把xml文件装到内存里,成为ocmenent对象来获取元素,优点是元素元素之间有关系,可以增删改查,缺点如果xml文件过大,可能是会内存溢出
2.SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。并以事件 驱动的方式进行具体解析,每执行一行,都将触发对应的事件。
3.PULL: android内置的XML解析方式
l 常见的解析开发包:
n JAXP: sun公司提供支持DOM和SAX开发包
n JDom:dom4j兄弟
n jsoup:一种处理HTML特定解析开发包
n dom4j:比较常用的解析开发包,hibernate底层采用。,在这里我们用deom4j
解析:
dom4j的常用方法:
直接来练习题操作吗,定义一个接口,再来个接口的实现类,然后写个xml文件,然后通过xml文件来调用该接口实现类的方法
1 package com.oracle.demo04; 2 3 public interface Person { //接口 4 public void a(); 5 public void b(); 6 public void c(); 7 }
1 package com.oracle.demo04; 2 3 public class PersonS implements Person{ 4 //接口实现类 5 @Override 6 public void a() { 7 System.out.println("出生"); 8 9 } 10 11 @Override 12 public void b() { 13 System.out.println("青年"); 14 15 } 16 17 @Override 18 public void c() { 19 System.out.println("爱你到老"); 20 21 } 22 } 23
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="http://www.example.org/web-app_2_5" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd" 5 version="2.5"> 6 <servlet> 7 <servlet-name>MyServer</servlet-name> 8 <servlet-class>com.oracle.demo04.PersonS</servlet-class> 这里写要读取实现类的路径 9 </servlet> 10 <servlet-mapping> 11 <servlet-name>MyServer</servlet-name> 12 <url-pattern>/hello</url-pattern> 13 </servlet-mapping> 14 </web-app>
1 package com.oracle.demo04; 2 3 import java.lang.reflect.Method; 4 5 import org.dom4j.Document; 6 import org.dom4j.DocumentException; 7 import org.dom4j.Element; 8 import org.dom4j.io.SAXReader; 9 10 public class Test { 11 12 public static void main(String[] args) throws Exception { 13 //创建解析器 14 SAXReader sa = new SAXReader(); 15 //此处写要读取xml文件的路径 16 Document doc = sa.read("src/com/oracle/demo04/WebDtd.xml"); 写要读取的xml文件路径 17 //获取根元素<web-app> 18 Element el = doc.getRootElement(); 19 //获取根元素下的指定的子元素 20 Element em = el.element("servlet"); 21 //获取server下的子元素 22 String servletclass = em.elementText("servlet-class"); 23 //获取后再根据获取到的xml元素来获取字节码对象 24 Class c = Class.forName(servletclass); 25 //创建一个对象,然后通过字节码对象来过去该类的方法 26 Object obj = c.newInstance(); 27 Method a = c.getMethod("a"); 28 Method b = c.getMethod("b"); 29 Method c1 = c.getMethod("c"); 30 //调用方法 31 a.invoke(obj); 32 b.invoke(obj); 33 c1.invoke(obj); 34 要注意,xml的路径一定要写对,创建doc对象读取的路径也要写对 35 36 37 38 39 40 } 41 42 }
控制台:
以上是关于java xml配置文件的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Android Studio 中片段的 XML 布局导航到相应的 java 类?
XML配置文件怎么写,都有些啥属性?java代码如何解析XML配置文件?
Android android.view.InflateException Binary XML 文件第 16 行:膨胀类片段时出错