如何将xml文件内容映射到Java对象

时间:2016-06-20 10:50:37

标签: java xml dom jaxb saxparser

我正在开发需要将xml文件映射到基于java的对象的项目。

我用google搜索,发现JAXB是用于映射XML-Java并返回XML的标准库。

我正在开发应用程序,其中部署了许多XML格式的数据源文件。我想在运行时从这个XML文件中找出某些属性。 XML文件的一个这样的例子如下:

<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd">
<datasource jndi-name="java:jboss/datasources/FDMS_DemoDS" pool-name="FDMS_DemoDS">
      <connection-url>jdbc:mysql://localhost:3306/demo?zeroDateTimeBehavior=convertToNull</connection-url>
      <driver>com.mysql</driver>
      <pool>
          <max-pool-size>60</max-pool-size>
      </pool>
      <security>
          <user-name>fduser</user-name>
          <password>fdms!</password>
      </security>
  </datasource>
</datasources>

现在我想使用Java从上面的XML文件中获取 max-pool-size connection-url 。我尝试使用JAXB,但不幸的是我遇到了一些问题。

有人可以帮我将这些XML映射到Java Object吗?

3 个答案:

答案 0 :(得分:1)

您的最简单方法是下载XSD文件并使用xjc为您生成java类。

  1. 下载http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd
  2. 启动xjc datasources_1_0.xsd
  3. 有关 xjc 的更多信息,绑定编译器 here

答案 1 :(得分:0)

如果您只想读取Java中的xml文件,那么还有很多选择。 我个人更喜欢普通的蒸煮器。它简单易用。

https://commons.apache.org/proper/commons-digester/

就个人而言,如果您需要做的就是读取文件,我觉得JAXB有点过分。请注意,digester无法写回xml文件。如果你需要回写XML,请不要使用它。

答案 2 :(得分:0)

xpath / jxpath是您案例中性能最佳的选项。