問題タブ [moxy]

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.

0 投票する
2 に答える
49885 参照

java - 複数のXML要素を単一のクラスにアンマーシャリングするJAXB

複数の XML 要素にまたがる単一の概念をモデル化している次の XML 構造があります。この形式は私の管理下にありません。

私が制御できるデータベースでこれをモデル化し、 、 、およびフィールドを含むより単純なChannelテーブルを作成したいと考えています。したがって、クラスでシングルにアンマーシャリングしたいと思います。idtypenameList<Channel>Wrapper

@Xml...これは注釈で自動的に行うことができますか? 現在、JAXB を使用して個別@XmlElement(name="Channel")のクラス リストにアンマーシャリングし、トランジェントを@XmlElement(name="ChannelName")後処理していますが、これらの要素をマップするためのより簡単な自動化された方法が必要だと考えています。それともXSLTの仕事ですか?ChannelName/nameChannel

XML が HTTP ファイル POST ファイルとして入ってくること、および私が Spring 3、Java、および Hibernate を使用していることを知っておくと役立つ場合があります。EclipseLink JAXB (MOXy)の何かが役立つことを願っています:)

0 投票する
1 に答える
1392 参照

xpath - 属性値ごとに要素値を取得するためのEclipseLinkMOXy@XmlPathサポート

EclipseLink MOXy JAXB実装を使用して、@ XmlPathアノテーションを使用して、要素の属性の値に基づいて要素値を取得しようとしています。私はそれを機能させることができないようです。これはサポートされていますか?

XMLの抜粋:
<Item>
  ...
  <ItemRefFields>
    <ItemRefField id="1">12345</ItemRefField>
    <ItemRefField id="2">blah</ItemRefField>
  </ItemRefFields>
</Item>

POJOの抜粋:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="Item")
public class Item
{
  ...
  @XmlPath("ItemRefFields/ItemRefField[@id='1']/text()")
  private String ItemRef1 = null;
  @XmlPath("ItemRefFields/ItemRefField[@id='2']/text()")
  private String ItemRef2 = null;
  ...
}

現在、両方の値が連続してItemRef2に割り当てられ、「blah」が最終的な値になりますが、ItemRef1に値が割り当てられることはありません。これは、XPath式の属性値の部分([@ id ='x'])が無視されているためだと思います。したがって、両方のXPath式は同じものとして扱われ、これにより、式が最初にItemRef1にマップされ、次にItemRef2にマップされ、ItemRef2がItemRef1マッピングを上書きするため、ItemRef2が優先されます。

これが私の側の構文上の問題によって引き起こされていることを願っています。何かアドバイスをいただければ幸いです。

ありがとう、ケビン

0 投票する
1 に答える
1871 参照

java - MOXy の xml-transient 宣言はどのように機能しますか?

別のプロジェクトに、変更できない Bean のセットがあります。これらの Bean には JPA と JAXB の両方のアノテーションがあり、RESTful 実装で使用されています。私の関係のほとんどは遅延ロードされており、どの要素が実際にトランスポート用にマーシャリングされるかについて、より詳細な制御を実現したいと考えていました。

以下の変更された MOXy Customer.java クラスがあります。

MOXy eclipselink-oxm マッピングを使用してマーシャリングされるものを制御できることを望んでいましたが、期待どおりに動作していません。JAXB アノテーションを使用して、エレメント (フィールドまたはプロパティー) を一時的であると宣言しますが、eclipselink-oxm.xml ではタイプの一時的宣言しか許可されません。ただし、そのように一時的な型を宣言すると、次の例外が発生します。

例外:

xml-transient 属性を削除するか、false に設定すると、期待どおり Customer が XML に変換されます。Customer Bean を変更せずに電話番号のマーシャリングを抑制する方法はありますか?

0 投票する
1 に答える
2177 参照

json - MOXy JSON のサポート

RESTEasy プロジェクトの JAXB 実装として EclipseLink の MOXy を使用しています。JSON のサポートという 1 つのことを除いて、すべてが正常に機能しています。RESTEasy の JettisonMappedContext を使用していますが、残念ながら、マーシャリング後の JSON には抽象スーパークラスに属するインスタンス変数フィールドしかありません。

サブクラス:

マーシャリング後の XML:

マーシャリング後の JSON:

これを達成する他の方法はありますか?

ありがとうございました。

0 投票する
4 に答える
14920 参照

java - JAXB 2.x:ターゲットクラスを知らずにXMLを非整列化する方法は?

これを行う方法があれば、最もエレガントなものを知りたいです。ここに質問があります: - 抽象クラス Z があると仮定しましょう - Z から継承された 2 つのクラス、A と B という名前があります。

次のように、任意のインスタンス (A または B) をマーシャリングします。

結果の XML で、それがどの種類のインスタンス (A または B) であったかがわかります。

さて、どのように非整列化しますか

UnmarshalException というメッセージが表示されます

javax.xml.bind.UnmarshalException"

では、Z のインスタンスを取得し、アンマーシャリング後にテストできるようにアンマーシャリングを行うにはどうすればよいでしょうか? たとえば、z instanceof A の場合... z instanceof B の場合、何か他のもの... など。

アイデアや解決策をありがとう。

MOXy を JAXB Impl として JRE1.6 を使用しています。

0 投票する
1 に答える
246 参照

jaxb - JAXB/MOXy:特定のノードの子孫をクローズド/独自クラスに渡し、部分的に非整列化する方法は?

XML から非整列化できるようにしたい Java クラスから始めています。スキーマを決定しながら進めています。次のような XML を使用したいと思います。

次のような Java クラスに注釈を付けたいと考えています。

<foo xmlns="http://proprietary.foo"> 要素を渡したいのですが、それは次のように機能するコンパイル済みファクトリ クラスの子孫です。

FooFactory.getFooFromDomNode(myFooElement) // Returns a private ProprietaryFooImpl as an instance of the public ProprietaryFoo Interface

ProprietaryFoo の DomHandler を作成する必要があるようですが、よくわかりません (「com.xyz.ProprietaryFooImpl も、そのスーパー クラスも、このコンテキストでは認識されていません」を取得していました)。 XmlJavaTypeAdapter に興味がある ValueType を Element として受け取る方法がわかりません。

0 投票する
1 に答える
937 参照

java - JAXBエンティティへのアンマーシャリングエラー

XML ストリームをエンティティにアンマーシャリングする際に問題があります。私の外部キーは、適切な主キーを持つオブジェクトに設定されることはありません。空のオブジェクトに設定されるだけです。

外部キーを持つクラスは ProductBase と呼ばれます。BrandData (フィールド pkId) と Categories (フィールド pkId) への参照があります。非整列化して永続化すると、BrandData と Categories を問題なく処理できます。ProductBase で問題が発生しました。

ProductBase は次のとおりです。

以下のアンマーシャリング:

次のような ProductBase オブジェクトになりたいと思います。

しかし、私は得る

ProductBase p1: p1.pkId=88294 p1.brandData = (フィールド null ごとの brandData オブジェクト) p1.categories = (フィールド null ごとのカテゴリ オブジェクト) p1.ts = (値が 1970-01-01T05:22:35.06 の Date オブジェクト)

そのため、ProductBase を永続化しようとすると、null 値の問題が発生します。

これは、BradnData および Categories エンティティでの不適切な参照が原因であると期待していました。@XmlInverseReference アノテーションを使用してみましたが、うまくいきませんでした。問題が何であるか誰にもわかりますか?

BrandData エンティティ:

カテゴリ エンティティ:

0 投票する
1 に答える
1979 参照

jaxb - MOXyを使用してXMLにマーシャリングする場合、Java継承を非表示/フラット化できますか?

JAXB を使用して、おそらく MOXy を使用して、マーシャリングで基本クラスをそのサブクラスに「フラット化」して、Java 継承が XML に表示されないようにすることは可能ですか? 生成されたクラスに 1 対 1 で対応する手動で作成されたクラスが多数あります。基本クラスには XML で値がありません。

明らかでない場合は、schemagen 機能を使用しています。Java から始めて、スキーマを作成します。

0 投票する
1 に答える
3040 参照

java - JAXBでドライな状態を維持

次の形式でXMLにシリアル化する必要のあるJavaクラスをいくつか開発しています。

最初は、Foo.java次のようになりました。

Bar.java何がどのように見えるかを推測するのにそれほど想像力は必要ありませんBaz.java。これらは、(この例では)、、、およびの非常に単純なラッパーintクラスStringですboolean。この時点まで、すべてがハンキーなドーリーです。の第9ラウンドを書いた後

「ねえ、私はこれをどのように解決できるか知っています。必要なのは1レベルの抽象化だけです!」紹介Wrapper<T>

さて、実装するためFooに私がする必要があるのは、拡張しWrapper、必要なファクトリメソッドを実装することだけです。

の宣言を追加し@XmlSeeAlso({... Foo.class ...})ます。Wrapper


  • プロ:これははるかに良いです。
  • 短所:JAXBはこれらのオブジェクトをシリアル化しません。

JAXBの腸の奥深くに投げられたために呼び出されJAXBContext.getInstance(Wrapper.class)たりJAXBContext.getInstance(Foo.class)失敗したりするもの:NullPointerException

JAXB実装をMetroからMOXyに切り替えようとしましたが(実装が変更されたことを確認しました)、同様のNPEがMOXyでスローされます。


ボイラープレートを最小限に抑え、 DRYを維持しながら、必要なXMLを生成する方法はありますか?

0 投票する
1 に答える
1350 参照

java - Specifying the MOXy runtime for multiple Java packages

Is there a way to specify MOXy as my JAXB implementation, for domain classes spread across multiple Java packages, other than putting jaxb.properties into every single package?