Αναλύσει έγγραφο XML με τα στοιχεία, όπως <g: id> χρησιμοποιώντας JAXB

ψήφοι
1
<?xml version=1.0?>
<rss xmlns:g=http://base.google.com/ns/1.0 version=2.0>
  <channel>
    <title>SSS Product Feed</title>
    <link>https://en-ae.sssports.com/</link>
    <description><![CDATA[The largest sports ]]></description>
    <item>
      <g:id>NIKE315122-001</g:id>
      <g:title><![CDATA[Nike Air Force 1 Low 07 Shoe]]></g:title> 
      <g:sport>Lifestyle</g:sport>
    </item>
    <item>
      <g:id>NIKE315122-002</g:id>
      <g:title><![CDATA[Nike Air Force 1 Low 07 Shoe]]></g:title> 
      <g:sport>Lifestyle</g:sport>
    </item>
  </channel>
</rss>

Αυτό είναι δείγμα αρχείου xml που θέλω να διαβάσω και να αναλύσει ....

έχω java κλάσεις όπως αυτό ....

 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)
 public class Rss {


     @XmlElement(name=channel)
     private Channel channel;


     public Channel getChannel() {
         return channel;
     }

     public void setChannel(Channel channel) {
         this.channel = channel;
     }

}

Μια άλλη classs είναι

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name=item)
public class Item {

     @XmlElement(name=g:id)
     private String id;


     public String getId() {
         return id;
     }
     public void setId(String id) {
         this.id = id;
     }

και η τάξη τελευταίο στοιχείο είναι

public class Channel {


    private List<Item> itemList;

    @XmlElement(name=item)
    public List<Item> getItemList() {
        return itemList;
    }

    public void setItemList(List<Item> itemList) {
        this.itemList = itemList;
    }
}

αυτό είναι αυτό που εγώ προσπαθώ να do..please βοηθήσει τι κάνω λάθος και εγώ όλες οι τιμές που εξάγονται από το xml επιστρέφει null .....

Δημοσιεύθηκε 20/10/2018 στις 12:42
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Σας Rssκαι Channelτάξεις φαίνονται εντάξει για μένα. Το πρόβλημα είναι που σου Itemτάξη, ιδιαίτερα σε στοιχεία της με ονομάτων.

Για τη μοντελοποίηση της <g:id>στοιχείο που δεν πρέπει να χρησιμοποιήσετε @XmlElement(name = "g:id"). Αντ 'αυτού, θα πρέπει να χρησιμοποιήσετε @XmlElement(name = "id", namespace = "http://base.google.com/ns/1.0"). Αυτό αντιστοιχεί στον ορισμό ονομάτων xmlns:g="http://base.google.com/ns/1.0"που περιέχεται στο αρχείο XML.

Και από τον τρόπο: Δεν χρειάζεται @XmlRootElementστην Itemτάξη. Θα το χρειαστείτε μόνο στην Rssτάξη, διότι <rss>είναι το ριζικό στοιχείο XML.

Η πλήρης Itemτάξη θα είναι κάπως έτσι:

@XmlAccessorType(XmlAccessType.FIELD)
public class Item {

    @XmlElement(name = "id", namespace = "http://base.google.com/ns/1.0")
    private String id;

    @XmlElement(name = "title", namespace = "http://base.google.com/ns/1.0")
    private String title;

    @XmlElement(name = "sport", namespace = "http://base.google.com/ns/1.0")
    private String sport;

    // public getters and setters (omitted here for brevity)
} 

Μπορείτε να βρείτε περισσότερες πληροφορίες υποβάθρου εδώ:

Απαντήθηκε 20/10/2018 στις 13:59
πηγή χρήστη

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