問題タブ [jaxb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - クラスパスではなく、JavaのデフォルトのJAXB実装が選択されています
XSL変換にJAXBを利用するJavaアプリケーションを作成しました。コマンドラインでXSLT1.0ではなくXSLT2.0を使用できるように、クラスパスにsaxon9.jarを含めました。
使用されたXSLTを報告するためのコードをXSLに含めました。
報告します。
これは、JVMの一部であるデフォルトの実装です。
指定したSaxonを使用するにはどうすればよいですか?
ファローアップ:
したがって、これらのメソッドはどれも機能しませんでした(saxon jarを承認されたディレクトリに配置することを除いて)が、すべて機能するはずです。「-jarmyApp.jar」を使用することと、代替のXSLT実装が必要なことの組み合わせには互換性がないようです。言い換えると...
java -Djavax.xml.transform.TransformerFactory = net.sf.saxon.TransformerFactoryImpl -classpath ./lib/saxon9.jar:./ -jar myApp.jar
...機能しませんが、これは機能します...
java -Djavax.xml.transform.TransformerFactory = net.sf.saxon.TransformerFactoryImpl -classpath ./lib/saxon9.jar:./myApp.jar org.dacracot.myApp
...興味深いことに、私は工場を指定する必要さえなく、サクソンバージョンを入手しています...
java -classpath ./lib/saxon9.jar:./myApp.jar org.dacracot.myApp
binding - JAXB:列挙型としての匿名の単純型?
XJCコンパイラを介してXSDからJavaを生成する場合、次のような匿名のsimpleTypesを持つ要素のタイプjava.lang.Stringを常に取得します。
もちろん、これを列挙したいと思います。XJCをだまして生成して使用させる方法はありますか?
JAXB2.1.3を使用しています。注:質問する前に、いいえ、スキーマを変更してXJCのバグに適合させることはできません。
java - JAXB で空の要素をインスタンス化する方法
JAXB を使用して XML メッセージを作成します。作成する必要がある XML は次のとおりです (簡単にするため)。
私のコードは次のようになります。
問題:header
要素が表示されません (ヘッダーは ですnull
)。ヘッダーが空の文字列に設定されている場合、次のように表示されます。
Object
の代わりにas type を使用するとString
、結果はさらに悪化します。
ところで:このコードを使用して XML 文字列を作成しています。
空のタグを取得することは可能ですか?
java - JAXB XML 出力形式に関する質問
次の構造のJavaクラスがあります(クラス名は何も意味しません。私はただ作っただけです)。
私が抱えている問題は、Test インスタンスをマーシャリングするときに JAXB によって生成される XML 出力にあります。XML 出力は常に次のようになります。
ご覧のとおり、一部の要素が適切にインデントされていません (つまり、最も深い要素、count および period)。何故ですか?JAXB コンテキストの作成方法に何か問題がありますか? または、JAXB によって再帰的にインデントできる要素の数に上限はありますか? どうすればこれを修正できますか? JAXB_FORMATTED_OUTPUT も true に設定しましたが、不適切なインデントが得られることに注意してください。
ありがとう。
java - JAXB継承、マーシャリングされたクラスのサブクラスへのアンマーシャル
XMLの読み取りと書き込みにJAXBを使用しています。私が欲しいのは、マーシャリングには基本JAXBクラスを使用し、アンマーシャリングには継承されたJAXBクラスを使用することです。これは、送信側のJavaアプリケーションがXMLを別の受信側のJavaアプリケーションに送信できるようにするためです。送信者と受信者は、共通のJAXBライブラリを共有します。レシーバーがXMLをアンマーシャリングして、汎用JAXBクラスを拡張するレシーバー固有のJAXBクラスにするようにします。
例:
これは、送信者が使用する一般的なJAXBクラスです。
これは、XMLをアンマーシャリングするときに使用されるレシーバー固有のJAXBクラスです。レシーバークラスには、レシーバーアプリケーションに固有のロジックがあります。
マーシャリングは期待どおりに機能します。問題はアンマーシャリングにありPerson
、JAXBContextがサブクラス化されたのパッケージ名を使用しているにもかかわらず、アンマーシャリングを行いますReceiverPerson
。
私が欲しいのは、にマーシャルを解除することReceiverPerson
です。私がこれを行うことができた唯一の方法は、から削除すること@XmlRootElement
ですPerson
。残念ながら、これを行うPerson
とマーシャリングされなくなります。@XmlRootElement
これは、JAXBが基本クラスから始まり、適切な名前の最初のクラスが見つかるまで下に向かって進むかのようです。createPerson()
に戻るメソッドを追加しようとしましReceiverPerson
たObjectFactory
が、それは役に立ちません。
java - EclipseRCPのケーススタディ
Eclipse RCPについて知りたいのですが、基本的な知識はありますが、EclipseRCPの機能についてもっと知りたいと思いました。そこで、一連の要件を作成して分析し、基本フレームワークとしてEclipse RCPを使用してそれらをどのように満たすことができるかについて設計上の決定を下し、最終的にEclipseRCPでそれらを実装することを自分自身に勧めました。さて、要件が厳しすぎるか、Eclipse RCPについてまだよく理解していないので、要件を満たすための適切なソリューションを考え出すのに苦労しています。
以下は要件の要約です(詳細が不足している可能性があります。これは実際には自分自身を励ますための単なる例です)。
一部のサーバーを監視するためのEclipseRCPアプリケーションが必要でした。これらのサーバーは、最初はアプリケーションが認識しているプログラムになります(つまり、サーバーのインとアウトを正確に認識しています)。ただし、将来的には、アプリケーションは、ユーザーが監視するアプリケーションの特性が異なる任意のプログラムを指定できるようにする必要があります(つまり、既知のサーバーだけでなく、以前は知らなかった他のサーバーも)。アプリケーションには、監視する必要のあるサーバーのすべての詳細(ホスト、ポート、ユーザー名、パスワードなど)を含むXML構成ファイルも必要です。このXML構成ファイルは、JAXBを使用してエンコードおよびデコードされます。
したがって、上記の要件に基づいて、次の詳細を考え出しました。
XMLは次のようになります。
アプリケーションが認識しているサーバーはどこにありますか。
ソースコードには、次のクラスの階層があります。
コンポーネント<---サーバー<---ServerA、ServerB
ServerAとServerBは、Serverの子孫であり、それぞれと要素にマップされます。
構成のポイントエントリは、ServerAのリストとServerBのリストを含むConfigurationというクラスにあります。これで、アプリケーションは認識していない他のプログラムを監視できるはずなので、XML構成ファイルも拡張可能である必要があります。したがって、Configurationクラスには、ユーザーが指定した他のコンポーネントにマップするObjectのリストも含まれます。構成ファイル。
Configuration.java
さて、これはあなたたちが問題に取り組むためにも行うことですか?私は、ユーザーが指定した他のプログラムをアプリケーションが監視できるようにするための要件について混乱しているだけだと思います。そもそも設定したことは知っていますが、「これはEclipse RCPの拡張ポイントを利用できるもののようです」ということを念頭に置いて設定しましたが、設定ファイルに飛び込んだので、どうすればいいのかわかりません。構成ファイルはplugin.xmlに関連していますか?
頭の中で、アプリケーションが監視する必要のあるプログラムの詳細(ホスト、ポート、ユーザー名、およびパスワード)を構成ファイルで指定する必要がありました。plugin.xmlは、アプリケーションが監視する必要のあるユーザー定義プログラムの拡張ポイントと拡張機能を指定するために使用されます。つまり、最終的に、ユーザー定義プログラムの場合、ユーザーはそれらをplugin.xmlで拡張機能として構成し、構成ファイルで他の詳細を指定する必要があるということですか?
java - JAXB は私に与えます: java.lang.IllegalArgumentException: is parameter must not be null
私は JAXB を使用してこれを行って、一部の XML を Java オブジェクトにアンマーシャリングしています。
私のコードは次のようになります。
ただし、このコードを実行すると例外が発生します。
どうしたの?
java - マーシャリング時に JAXB が @XmlRootElement のスーパークラス メソッドをバインドしないようにするにはどうすればよいですか?
@XmlRootElement
withとして注釈が付けられたクラスがあり@XmlAccessorType(XmlAccessType.NONE)
ます。私が抱えている問題は、スーパークラスのメソッドがバインドされたくないときにバインドされており、クラスを更新できないことです。これが起こらないようにルート要素クラスに付けることができる注釈があることを願っています。
例:
アノテーション@XmlElement
が付けられたメソッドのみPerson
がバインドおよびマーシャリングされると予想しますが、スーパークラスのメソッドもすべてバインドされます。結果として得られる XML には、情報が多すぎます。
スーパークラス自体に注釈を付けなくても、スーパークラスのメソッドがバインドされないようにするにはどうすればよいですか?
java - Java でのデータベースへの XML ドキュメントの保存 (Hibernate と JAXB の組み合わせ)
Hibernate を使用して XML ファイルをデータベースに保存するソリューションを探しています。
問題は、XML ファイルの構造が Hibernate Bean と異なることです。
JAXB を使用して XML コンテンツを Hibernate Bean にシリアライズしようとしています。
次のシナリオを想像してください: 次の xml ファイルがあります。
次に、property1 と detail1 を 1 つの Bean に保存します。
その問題を解決するためにどの JAXB アノテーションを使用できるか、誰にも考えがありますか?