如何用Java读取XML文件?

时间:2010-02-25 11:09:34

标签: java xml

我不需要阅读复杂的XML文件。我只想用最简单的XML阅读器阅读以下配置文件

<config>
    <db-host>localhost</db-host>
    <db-port>3306</db-port>
    <db-username>root</db-username>
    <db-password>root</db-password>
    <db-name>cash</db-name>
</config>

如何通过Java使用XML阅读器阅读上述XML文件?

http://i45.tinypic.com/2eamoeg.jpg

9 个答案:

答案 0 :(得分:9)

我喜欢jdom:

SAXBuilder parser = new SAXBuilder();
Document docConfig = parser.build("config.xml");
Element elConfig = docConfig.getRootElement();
String host = elConfig.getChildText("host");

答案 1 :(得分:8)

由于您要解析配置文件,我认为commons-configuration将是最佳解决方案。

  

Commons Configuration提供了一个通用配置界面,使Java应用程序能够从各种来源(包括XML)读取配置数据

答案 2 :(得分:5)

您可以使用简单的DOM解析器来读取xml表示。

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder db = dbf.newDocumentBuilder();
dom = db.parse("config.xml");

答案 3 :(得分:4)

如果您只需要一个Java SDK附带的简单解决方案(自5.0起),请查看XPath包。我相信其他人表现更好,但这就是我所需要的。这是一个例子:

import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.xml.sax.InputSource;

...

try {
    XPath xpath = XPathFactory.newInstance().newXPath();
    InputSource inputSource = new InputSource("strings.xml");

    // result will equal "Save My Changes" (see XML below)
    String result = xpath.evaluate("//string", inputSource);
}
catch(XPathExpressionException e) {
    // do something
}

<强>的strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="saveLabel">Save My Changes</string>
</resources>

答案 4 :(得分:2)

Java有几种XML解析器。我使用过的一个特别是开发人员友好的JDOM。通过开发人员友好,我的意思是“面向Java”(即,您使用程序中的对象),而不是“面向文档”,就像其他一些工具一样。

答案 5 :(得分:2)

我建议使用Commons Digester,它允许您解析文件而无需编写大量代码。它使用一系列规则来确定遇到给定元素或属性时应执行的操作(典型规则可能是创建特定业务对象)。

答案 6 :(得分:0)

对于我的应用程序中的类似用例,我使用了JaxB。使用Jaxb,读取XML文件就像与Java POJO交互一样。但要使用JAXB,您需要为此xml文件提供xsd。您可以查找更多信息here

答案 7 :(得分:0)

如果您希望能够直接读取和写入XML对象,可以使用XStream

答案 8 :(得分:0)

虽然我还没有尝试过XPath,因为它现在刚刚引起我的注意,我已经尝试了一些解决方案,但没有找到适用于这种情况的任何东西。

只要你在自述文件中提到的假设下工作,我决定创建一个满足这种需求的库。它的优点是它使用SAX解析整个文件并以地图的形式将其返回给用户,因此您可以将值查找为键 - &gt;值。

https://github.com/daaso-consultancy/ConciseXMLParser

如果缺少某些东西,请告诉我缺失的项目,因为我只根据他人和我自己的需要进行开发。