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解析方式

 

常见的解析开发包:

 

n JAXP: sun公司提供支持DOMSAX开发包

 

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配置文件的主要内容,如果未能解决你的问题,请参考以下文章

创建片段而不从 java 代码实例化它

如何从 Android Studio 中片段的 XML 布局导航到相应的 java 类?

在扩充XML文件之后,不会调用onCreate()

XML配置文件怎么写,都有些啥属性?java代码如何解析XML配置文件?

Android android.view.InflateException Binary XML 文件第 16 行:膨胀类片段时出错

Eclipse 中的通用代码片段或模板