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 등도 있다.본고는 XML 문서를 읽기 위해 DOM, DOM4J 방식과 도구 클래스로 봉인하는 방식을 소개한다.
4.XML 문서:
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 방식으로 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 방식으로 XML 문서를 확인합니다.

 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 파일은 주로 키-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 파일:

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 파일의 키는 realPath의 내용입니다.
위에서 말한 것은 편집자가 여러분께 소개한 자바 개발에서 XML과properties 프로필을 읽는 방법입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 점이 있으면 저에게 메시지를 남겨 주시면 편집자는 제때에 답장을 드리겠습니다!

좋은 웹페이지 즐겨찾기