Heim  >  Artikel  >  Java  >  So lesen Sie XML- und Eigenschaftenkonfigurationsdateien in der Java-Entwicklung

So lesen Sie XML- und Eigenschaftenkonfigurationsdateien in der Java-Entwicklung

高洛峰
高洛峰Original
2017-01-12 10:27:031649Durchsuche

Verwandte Lektüre:

Verwenden von Ajax zum Hochladen von Dateien und anderen Parametern (Java-Entwicklung)

1. XML-Datei:

Was ist XML? XML bezieht sich im Allgemeinen auf Extensible Markup Language, eine Teilmenge der Standard Universal Markup Language, einer Auszeichnungssprache, die zum Markieren elektronischer Dokumente verwendet wird, um sie strukturell zu gestalten.

2. Vorteile von XML-Dateien:

1) Inhalt und Struktur des XML-Dokuments sind vollständig getrennt.
2) Starke Interoperabilität.
3) Standardisierung und Vereinheitlichung.
4) Unterstützt mehrere Kodierungen.
5) Starke Skalierbarkeit.

3. So analysieren Sie XML-Dokumente:

XML analysiert XML-Dokumente in verschiedenen Sprachen auf die gleiche Weise, aber die implementierte Syntax ist unterschiedlich, eine Erstens gibt es die SAX-Methode, die die XML-Datei Schritt für Schritt in der Reihenfolge der XML-Datei analysiert. Eine weitere Analysemethode ist die DOM-Methode, und der Schlüssel zur DOM-Analyse ist der Knoten. Es gibt auch DOM4J, JDOM und andere Methoden. In diesem Artikel werden die DOM- und DOM4J-Methode sowie die Methode zum Einkapseln in eine Toolklasse zum Lesen von XML-Dokumenten vorgestellt.

4.XML-Dokument:

scores.xml:

<?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-Parsing-XML

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 analysiert XML-Dokument:

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();
 }
}

Natürlich nein Unabhängig davon, welche Methode wir zum Parsen von XML verwenden, müssen wir das JAR-Paket importieren (vergessen Sie es nicht).

7. Mein eigener Weg:

In tatsächlichen Entwicklungsprojekten müssen wir gut darin sein, Werkzeugklassen zu verwenden und die Funktionen, die wir wiederholt verwenden, in einer Werkzeugklasse zu kapseln. Daher ist die folgende Methode die Methode, die ich während des Entwicklungsprozesses verwende.

7.1 Was ist eine Eigenschaftendatei:

7.1.1 Strukturell:

.xml-Datei ist hauptsächlich ein Dokument in Baumform.
.properties-Dateien liegen hauptsächlich in Form von Schlüssel-Wert-Paaren vor.

7.1.2 Aus flexibler Sicht:

.xml-Dateien sind flexibler als .properties-Dateien. Lesen Sie weiter.

7.1.3 Aus praktischer Sicht:

.properties-Dateikonfiguration ist einfacher als .xml-Dateikonfiguration.

7.1.4 Aus Anwendungssicht:

.properties-Dateien eignen sich besser für kleine und einfache Projekte, da .xml flexibler ist.

7.2 Mein eigenes Eigenschaftendokument:

Ich habe in meinem eigenen Projekt eine path.properties-Datei erstellt, die zum Speichern des Pfads verwendet wird, den ich verwenden werde, gespeichert in der Form name = Wert. Zum Beispiel:

realPath = D:/file/

7.3 Analysieren Sie Ihre eigene .properties-Datei:

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;
 }
}

Bevor wir es verwenden, müssen wir nur einen Wert an das DATABASE_CONFIG_FILE-Attribut anhängen, das den Namen unserer .properties-Datei darstellt. Bei Verwendung können wir den Klassennamen direkt verwenden im Der Schlüssel in der .properties-Datei ist der Inhalt von realPath.

Das Obige ist die vom Herausgeber eingeführte Methode zum Lesen von XML- und Eigenschaftenkonfigurationsdateien. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht Sofort allen antworten!

Weitere Artikel zu Methoden zum Lesen von XML- und Eigenschaftenkonfigurationsdateien in der Java-Entwicklung finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn