MOXy JAXBを使用してXMLファイルをアンマーシャリングしようとしています。私は既に生成された一連のクラスを持っています。私は必要なすべてのXML要素をモデルにマップするためにXpathを使用しています。MOXy JAXB:いくつかのXMLタグ要素を同じJAVA beanプロパティにマップする方法
私はこのようなXMLファイルを持っている:
<?xml version="1.0" encoding="UTF-8"?>
<fe:Facturae xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:fe="http://www.facturae.es/Facturae/2009/v3.2/Facturae">
<Parties>
<SellerParty>
<LegalEntity>
<CorporateName>Company Comp SA</CorporateName>
<TradeName>Comp</TradeName>
<ContactDetails>
<Telephone>917776665</Telephone>
<TeleFax>917776666</TeleFax>
<WebAddress>www.facturae.es</WebAddress>
<ElectronicMail>[email protected]</ElectronicMail>
<ContactPersons>Fernando</ContactPersons>
<CnoCnae>28000</CnoCnae>
<INETownCode>2134AAB</INETownCode>
<AdditionalContactDetails>Otros datos</AdditionalContactDetails>
</ContactDetails>
</LegalEntity>
</SellerParty>
<BuyerParty>
<Individual>
<Name>Juana</Name>
<FirstSurname>Mauriño</FirstSurname>
<OverseasAddress>
<Address>Juncal 1315</Address>
<PostCodeAndTown>00000 Buenos Aires</PostCodeAndTown>
<Province>Capital Federal</Province>
<CountryCode>ARG</CountryCode>
</OverseasAddress>
<ContactDetails>
<Telephone>00547775554</Telephone>
<TeleFax>00547775555</TeleFax>
</ContactDetails>
</Individual>
</BuyerParty>
</Parties>
</fe:Facturae>
その後、私は私のモデルを持っている:
@XmlRootElement(namespace="http://www.facturae.es/Facturae/2009/v3.2/Facturae", name="Facturae")
public class Facturae implements BaseObject, SecuredObject, CreationDataAware {
@XmlPath("Parties/SellerParty")
private Party sellerParty;
@XmlPath("Parties/BuyerParty")
private Party buyerParty;
}
public class Party implements BaseObject, SecuredObject, CreationDataAware {
@XmlPath("LegalEntity/ContactDetails")
private ContactDetails contactDetails;
}
あなたが見ることができるように、<ContactDetails></ContactDetails>
は<SellerParty></SellerParty>
と<BuyerParty></BuyerParty>
中に存在するが、この二つのタグが共有します同じJAVAオブジェクト(Party)。以前のマッピング(@XmlPath( "LegalEntity/ContactDetails"))では、SellerPartyのContactDetails情報を正しく渡すことができますが、同時にContactDetailsを<BuyerParty>
に渡したいと思っています。
私はそのような何かしようとしていた:
@XmlPaths(value = { @XmlPath("LegalEntity/ContactDetails"),@XmlPath("Individual/ContactDetails") })
private ContactDetails contactDetails;
を、それは動作しません。
あなたは私に手を差し伸べることができますか?
ありがとうございました。
どうもありがとう、これは完璧です! – rocotocloc