Java开发中读取XML与properties配置文件的方法

网友投稿 281 2023-06-19


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:

<!ELEMENT students (student+)>

<!ELEMENT student (name,course,score)>

<!ATTLIST student id CDATA #REQUIRED>

<!ELEMENT name (#PCDATA)>

<!ELEMENT course (#PCDATA)>

<!ELEMENT score (#PCDATA)>

]>

张三

JavaSE

100

李四

Oracle

98

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

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

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.http://out.println(name+"----->"+value);

}

}

System.out.http://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 it = root.elementIterator();

//处理每个student

while(it.hasNext()){

//得到每个学生

Element stuElem =it.next();

//System.out.println(stuElem);

//输出学生的属性:id

List attrList = stuElem.attributes();

for(Attribute attr :attrList){

String name = attr.getName();

String value = attr.getValue();

System.out.println(name+"----->"+value);

}

//输出学生的子元素:name,course,score

Iterator 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.我自己的方式:

http://

在实际开发的工程中,我们要善于使用工具类,将我们反复使用的功能封装成一个工具类,所以,下面的方式就是我在开发的过程中使用的方式.

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文件:

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配置文件的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,会及时回复大家的!

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

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.http://out.println(name+"----->"+value);

}

}

System.out.http://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 it = root.elementIterator();

//处理每个student

while(it.hasNext()){

//得到每个学生

Element stuElem =it.next();

//System.out.println(stuElem);

//输出学生的属性:id

List attrList = stuElem.attributes();

for(Attribute attr :attrList){

String name = attr.getName();

String value = attr.getValue();

System.out.println(name+"----->"+value);

}

//输出学生的子元素:name,course,score

Iterator 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.我自己的方式:

http://

在实际开发的工程中,我们要善于使用工具类,将我们反复使用的功能封装成一个工具类,所以,下面的方式就是我在开发的过程中使用的方式.

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文件:

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配置文件的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,会及时回复大家的!

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.http://out.println(name+"----->"+value);

}

}

System.out.http://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 it = root.elementIterator();

//处理每个student

while(it.hasNext()){

//得到每个学生

Element stuElem =it.next();

//System.out.println(stuElem);

//输出学生的属性:id

List attrList = stuElem.attributes();

for(Attribute attr :attrList){

String name = attr.getName();

String value = attr.getValue();

System.out.println(name+"----->"+value);

}

//输出学生的子元素:name,course,score

Iterator 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.我自己的方式:

http://

在实际开发的工程中,我们要善于使用工具类,将我们反复使用的功能封装成一个工具类,所以,下面的方式就是我在开发的过程中使用的方式.

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文件:

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配置文件的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,会及时回复大家的!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ajax异步请求详解
下一篇:使用Ajax进行文件与其他参数的上传功能(java开发)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~