我不需要阅读复杂的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文件?
答案 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
如果缺少某些东西,请告诉我缺失的项目,因为我只根据他人和我自己的需要进行开发。