Java 개발에서 XML과properties 프로필을 읽는 방법
7989 단어 javaxmlproperties프로비저닝파일
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 프로필을 읽는 방법입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 점이 있으면 저에게 메시지를 남겨 주시면 편집자는 제때에 답장을 드리겠습니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.