2016-06-20 4 views
2

xmlファイルをJavaベースのオブジェクトにマップする必要があるプロジェクトに取り組んでいます。xmlファイルのコンテンツをJavaオブジェクトにマップする方法

JAXBは、XML-JavaをマップしてXMLに戻すための標準ライブラリです。

XML形式のデータソースファイルが多数存在するアプリケーションに取り組んでいます。そして、私は実行時にこのXMLファイルから特定のプロパティを見つけたいと思っています。 XMLファイルの1つのそのような例を以下に示す:

<?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に接続URLを取得したいです。私はJAXBを使ってみましたが、残念ながら私はいくつかの問題に直面しています。

これらのXMLのJavaオブジェクトへのマッピングは誰でも助けてくれますか?

+0

JAXB、STAXなどの単純なxmlパーサーを使用して、JAXBを使用する代わりにこれらの値をフェッチすることができます。 – Sanjeev

+0

@Sanjeev素早く対応いただきありがとうございます。私は値を取得したくないだけでなく、それをJavaオブジェクトにマップし、そのオブジェクトをさらに使用する必要があります。 –

+0

JAXBを使用することもできますし、必要に応じてxmlbeansを使用することもできます。どちらの場合も、問題を説明できる実例を考え出す必要があります。現在あなたの質問は公開されています。 – Sanjeev

答えて

0

Javaでxmlファイルを読み込むだけなら、さらに多くのオプションがあります。 私は個人的には一般的な消化槽を好む。そのシンプルで使いやすい。

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

は個人的に、私はあなたがする必要があるすべてのファイルを読み取られるとJAXBはやり過ぎのビットを感じています。ダイジェスターはxmlファイルを書き戻すことはできませんのでご注意ください。あなたがXMLを書き返す必要があるなら、それを使わないでください。

+0

私はちょうどXMLファイルを読み込み、それ以外のものはjavaファイルにマップしたいです。 –

+0

Digesterはそのために構築されています。ドキュメントを読んでください。それをあなたが選んだファイルにマップすることができます。 –

1

あなたの場合、最も簡単な方法はXSDファイルをダウンロードし、xjcを使用してJavaクラスを生成することです。

  1. ダウンロードhttp://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd
  2. 起動xjc datasources_1_0.xsd

詳細情報についてXJCバインディングコンパイラhere

0

のxpath/JXPathはあなたのケースのための最もパフォーマンスのオプションです。

関連する問題