一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - Java開發中讀取XML與properties配置文件的方法

Java開發中讀取XML與properties配置文件的方法

2020-07-24 12:20難得丿糊塗灬 JAVA教程

這篇文章主要介紹了Java開發中讀取XML與properties配置文件的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

相關閱讀:

使用Ajax進行文件與其他參數的上傳功能(java開發)

1. XML文件:

什么是XML?XML一般是指可擴展標記語言,標準通用標記語言的子集,是一種用于標記電子文件使其具有結構性的標記語言。

2.XML文件的優點:

1)XML文檔內容和結構完全分離。
2)互操作性強。
3)規范統一。
4)支持多種編碼。
5)可擴展性強。

3.如何解析XML文檔:

XML在不同的語言中解析XML文檔都是一樣的,只不過實現的語法不一樣,基本的解析方式有兩種,一種是SAX方式,是按照XML文件的順序一步一步解析。另外一種的解析方式DOM方式,而DOM方式解析的關鍵就是節點。另外還有DOM4J、JDOM等方式。本文介紹的是DOM、DOM4J方式與封裝成一個工具類的方式來讀取XML文檔。

4.XML文檔:

scores.xml:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE students [
 <!ELEMENT students (student+)>
 <!ELEMENT student (name,course,score)>
 <!ATTLIST student id CDATA #REQUIRED>
 <!ELEMENT name (#PCDATA)>
 <!ELEMENT course (#PCDATA)>
 <!ELEMENT score (#PCDATA)>
]>
<students>
 <student id="11">
  <name>張三</name>
  <course>JavaSE</course>
  <score>100</score>
 </student>
 <student id="22"
  <name>李四</name>
  <course>Oracle</course>
  <score>98</score>
 </student>
</students>

5.DOM方式解析XML

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
  //1.創建DOM解析器工廠
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  //2.由DOM解析器工廠創建DOM解析器
  DocumentBuilder db = dbf.newDocumentBuilder();
  //3.由DOM解析器解析文檔,生成DOM樹
  Document doc = db.parse("scores.xml");
  //4.解析DOM樹,獲取文檔內容(元素 屬性 文本)
  //4.1獲取根元素scores
  NodeList scoresList = doc.getChildNodes();
  Node scoresNode = scoresList.item(1);
  System.out.println(scoresList.getLength());
  //4.2獲取scores中所有的子元素student
  NodeList studentList = scoresNode.getChildNodes();
  System.out.println(studentList.getLength());
  //4.3對每個student進行處理
  for(int i=0;i<studentList.getLength();i++){
   Node stuNode = studentList.item(i);
   //System.out.println(stuNode.getNodeType());
   //輸出元素的屬性 id
   if(stuNode.getNodeType()==Node.ELEMENT_NODE){
    Element elem =(Element)stuNode;
    String id= elem.getAttribute("id");
    System.out.println("id------>"+id);
   }
   //輸出元素的子元素 name course score
   NodeList ncsList = stuNode.getChildNodes();
   //System.out.println(ncsList.getLength() );
   for(int j=0;j<ncsList.getLength();j++){
    Node ncs = ncsList.item(j);
    if(ncs.getNodeType() == Node.ELEMENT_NODE){
      String name = ncs.getNodeName();
      //String value = ncs.getFirstChild().getNodeValue();//文本是元素的子節點,所以要getFirstChild
      String value = ncs.getTextContent();
      System.out.println(name+"----->"+value);
    }
   }
   System.out.println();
  }
 }

6.DOM4J方式解析XML文檔:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public static void main(String[] args) throws DocumentException {
 //使用dom4j解析scores2.xml,生成dom樹
 SAXReader reader = new SAXReader();
 Document doc = reader.read(new File("scores.xml")); 
 //得到根節點:students
 Element root = doc.getRootElement(); 
 //得到students的所有子節點:student
 Iterator<Element> it = root.elementIterator();
 //處理每個student
 while(it.hasNext()){
  //得到每個學生
  Element stuElem =it.next();
  //System.out.println(stuElem);
  //輸出學生的屬性:id
  List<Attribute> attrList = stuElem.attributes();
  for(Attribute attr :attrList){
   String name = attr.getName();
   String value = attr.getValue();
   System.out.println(name+"----->"+value);
  }
  //輸出學生的子元素:name,course,score
  Iterator <Element>it2 = stuElem.elementIterator();
  while(it2.hasNext()){
   Element elem = it2.next();
   String name = elem.getName();
   String text = elem.getText();
   System.out.println(name+"----->"+text);
  }
  System.out.println();
 }
}

當然,無論我們是使用那種方式解析XML的,都需要導入jar包(千萬不要忘記)。

7.我自己的方式:

在實際開發的工程中,我們要善于使用工具類,將我們反復使用的功能封裝成一個工具類,所以,下面的方式就是我在開發的過程中使用的方式.

7.1什么是properties文件:

7.1.1 從結構上講:

.xml文件主要是樹形文件。
.properties文件主要是以key-value鍵值對的形式存在

7.1.2 從靈活的角度來說:

.xml文件要比.properties文件的靈活讀更高一些。

7.1.3 從便捷的角度來說:

.properties文件比.xml文件配置更加簡單。

7.1.4 從應用程度上來說:

.properties文件比較適合于小型簡單的項目,因為.xml更加靈活。

7.2自己的properties文檔:

在我自己的項目中創建了一個path.properties文件,里面用來存放我即將使用的路徑,以名字=值的方式存放。例如:

realPath = D:/file/

7.3 解析自己的.properties文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
public class PropertiesUtil {
 private static PropertiesUtil manager = null;
 private static Object managerLock = new Object();
 private Object propertiesLock = new Object();
 private static String DATABASE_CONFIG_FILE = "/path.properties";
 private Properties properties = null;
 public static PropertiesUtil getInstance() {
  if (manager == null) {
   synchronized (managerLock) {
    if (manager == null) {
     manager = new PropertiesUtil();
    }
   }
  }
  return manager;
 }
 private PropertiesUtil() {
 }
 public static String getProperty(String name) {
  return getInstance()._getProperty(name);
 }
 private String _getProperty(String name) {
  initProperty();
  String property = properties.getProperty(name);
  if (property == null) {
   return "";
  } else {
   return property.trim();
  }
 }
 public static Enumeration<?> propertyNames() {
  return getInstance()._propertyNames();
 }
 private Enumeration<?> _propertyNames() {
  initProperty();
  return properties.propertyNames();
 }
 private void initProperty() {
  if (properties == null) {
   synchronized (propertiesLock) {
    if (properties == null) {
     loadProperties();
    }
   }
  }
 }
 private void loadProperties() {
  properties = new Properties();
  InputStream in = null;
  try {
   in = getClass().getResourceAsStream(DATABASE_CONFIG_FILE);
   properties.load(in);
  } catch (Exception e) {
   System.err
     .println("Error reading conf properties in PropertiesUtil.loadProps() "
       + e);
   e.printStackTrace();
  } finally {
   try {
    in.close();
   } catch (Exception e) {
   }
  }
 }
 /**
  * 提供配置文件路徑
  *
  * @param filePath
  * @return
  */
 public Properties loadProperties(String filePath) {
  Properties properties = new Properties();
  InputStream in = null;
  try {
   in = getClass().getResourceAsStream(filePath);
   properties.load(in);
  } catch (Exception e) {
   System.err
     .println("Error reading conf properties in PropertiesUtil.loadProperties() "
       + e);
   e.printStackTrace();
  } finally {
   try {
    in.close();
   } catch (Exception e) {
   }
  }
  return properties;
 }
}

當我們使用之前,我們只需要給 DATABASE_CONFIG_FILE 屬性附上值,就是我們.properties文件的名稱,當使用的時候,我們就可以直接使用類名. getProperty(“realPath”);的方式就可以獲取到在.properties文件中的key為realPath的內容。

以上所述是小編給大家介紹的Java開發中讀取XML與properties配置文件的方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

原文鏈接:http://blog.csdn.net/hhb1san14/article/details/54177078

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女69xx | 日韩每日更新 | 男人猛进女人屁股免费 | 91精品综合国产在线观看 | 互换娇妻爽文100系列小说 | 美女被绑着吸下部的故事 | 精品国产一级毛片大全 | 午夜爽喷水无码成人18禁三级 | www.av免费 | 大学第一次基本都没了 | 国产成人免费片在线视频观看 | 狠狠久久久久综合网 | 精品一区二区三区 不卡高清 | 亚洲国产成人精品无码区APP | 精品精品国产自在现拍 | 男人狂躁女人下面的视频免费 | 成年视频在线观看 | 国产精品aⅴ| 高清视频在线观看+免费 | 日韩伦理在线看 | 久久夜色噜噜噜亚洲AV0000 | 欧洲美女啪啪 | 香蕉精品国产高清自在自线 | 操姓| 国产一区在线看 | 美女的隐私脱裤子无遮挡 | 亚洲国产欧美在线人成aaaa20 | 日日本老女人 | 免费a视频在线观看 | 污小说免费| 97久久久亚洲综合久久88 | 久久精视频 | 亚洲丁香网 | www.四虎在线 | pron欧美| 久久精品成人免费看 | 国产免费小视频 | 垫底辣妹免费观看完整版 | 范冰冰a级一级特级毛片 | 美女机机对机机的视频(免费) | 国产欧美一区二区三区久久 |