Ποια θα ήταν τα σχόλια JAXB για αυτό το αρχείο xml;

ψήφοι
1

Έχω ένα ωφέλιμο φορτίο xml αρχείο που θέλω να unmarshal χρήση JAXB, έχω δημιουργήσει μια τάξη POJO για unmarshalling και έχω οριστεί χαρακτηριστικά xml και τα στοιχεία της εν λόγω POJO, αλλά είμαι λίγο σύγχυση σχετικά με ονομάτων, πώς να σχολιάσετε τους?

Μου αρχείο xml:

<ns1:ContractLinkEvent xmlns:ns0=http://Enterprise.BizTalk.Canonical.Schemas/v2.0/ESB xmlns:ns1=http://Enterprise.BizTalk.MCF.Core.Schemas/v2.0/ESB>

<Header xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:xsd=http://www.w3.org/2001/XMLSchema>

</Header>

<ContractLink xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:xsd=http://www.w3.org/2001/XMLSchema>

<ContractLinkId>1509148</ContractLinkId>

<BillingProfile>

<BillingProfileId>173886</BillingProfileId>

<BillingProfileCode xsi:nil=true/>

</BillingProfile>

</ContractLink>

</ns1:ContractLinkEvent>

JAXB μου σχολιασμένη POJO είναι:

@XmlRootElement(name = ContractLinkEvent, namespace=http://Enterprise.BizTalk.Canonical.Schemas/v2.0/ESB)
@XmlAccessorType(XmlAccessType.FIELD)
public class ContractLinkPojo { 

    @XmlElement(name=Header)
    private String Header;

    @XmlElement(name=ContractLink)
    private String ContractLink;

. . . συνεχίζεται

Παίρνω την ακόλουθη εξαίρεση, ενώ unmarshalling:

java.io.IOException: javax.xml.bind.UnmarshalException
 - with linked exception:
[com.sun.istack.SAXParseException2; lineNumber: 1; columnNumber: 1; unexpected element (uri:http://Enterprise.BizTalk.MCF.Core.Schemas/v2.0/ESB, local:ContractLinkEvent). Expected elements are (none)]

Δεν νομίζω ότι έχω ορίζονται οι χώροι ονομάτων σωστά γιατί δεν έχουν ακόμη οριστεί ονομάτων, όπως εγώ»εξακολουθούν να έχουν συγκεχυμένη, οποιεσδήποτε ιδέες;

EDIT: Αυτή είναι η διαδρομή μου για unmarshalling

rest(/readXml)
    .consumes(application/xml)
    .post()
    .to(direct:xmlread);

    from(direct:xmlread).streamCaching()
    .doTry().unmarshal(xmlDataFormat)
    .process(readAndInsertXml)
    .to(mock:result).end();
}
Δημοσιεύθηκε 20/10/2018 στις 12:53
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Namespaces είναι παρόμοια με τη συσκευασία ονόματα σε Java. Μπορείτε να χρησιμοποιήσετε ότι για να έχουν ένα μοναδικό όνομα για τα στοιχεία XML που δημιουργείτε έτσι ώστε να μην έρχονται σε αντίθεση με άλλα στοιχεία XML. Μπορείτε να ορίσετε ένα χώρο ονομάτων προεπιλογή XML, όπως:

xmlns="http://Enterprise.BizTalk.Canonical.Schemas/v2.0/ESB"

Μπορείτε να ορίσετε πολλαπλές χώρο ονομάτων XML με προθέματα όπως:

   xmlns:ns0="..." 
   xmlns:ns1="..."

Στο παραπάνω NS0 και NS1 είναι προθέματα που δημιουργήσατε.

Στο xml σας, δεν έχετε ορίσει καμία προεπιλογή χώρο ονομάτων. Έτσι, υποθέτω ότι προσπαθείτε να χρησιμοποιήσετε ονομάτων προθέματα NS0 και NS1 σε στοιχεία ταυτότητας. Σε μια τέτοια περίπτωση, που έχετε χρησιμοποιήσει NS1 για ContractLinkElement αλλά όχι <Επικεφαλίδα>, <ContractLink> ή οτιδήποτε άλλο. Ωστόσο, NS0 δεν χρησιμοποιείται πουθενά και αν δεν είναι απαραίτητο, μπορείτε να αφαιρέσετε αυτό. Παρακαλώ ελέγξτε αν αυτό είναι ό, τι σκόπευε να κάνει.

Επίσης, δεν υπάρχει τελειώνει ετικέτα:

<ns1:ContractLinkEvent 
xmlns:ns0="http://Enterprise.BizTalk.Canonical.Schemas/v2.0/ESB" 
xmlns:ns1="http://Enterprise.BizTalk.MCF.Core.Schemas/v2.0/ESB">
Απαντήθηκε 20/10/2018 στις 13:48
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more