Как использовать @XStream для отображения XML для RSS-каналов?

Я пытаюсь добавить приведенный ниже код в Java с использованием аннотаций Xstream. Я совершенно не понимаю, как мне это сделать. В настоящее время у меня есть класс с именем Channel.java

               @XStreamAlias("channel")
                  public class Channel {
               private String link;

           @XStreamAlias("atom:link")
           private AtomLink atom_link;

           private String title;
           private String description;

          @XStreamImplicit
          private List<Item> itemList;
              etc
            }   

Image.java

          import com.thoughtworks.xstream.annotations.XStreamAlias;
         import com.thoughtworks.xstream.annotations.XStreamImplicit;

        @XStreamAlias("image")
          public class Image {
         private String url;

        public String getUrl() {
    return url;
  }

      public void setUrl(String url) {
    this.url = url;
  }
         }

Я пытаюсь получить приведенный ниже код в классе Channel. В общем, я пытаюсь добавить субэлемент для RSS-каналов здесь

Ожидаемый XML

             <channel>
                 <title>
                 </title>
                 <image>
                   <url>
                   </url>
                 </image>
                <item>

                </item>
             </channel>

Как мне это сделать? У меня есть Image.java. Но как мне получить его в Channel.java?

1 ответ

Решение

Проверь это

import java.util.List;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

@XStreamAlias("channel")
public class Channel {

    private String link;

    @XStreamAlias("atom:link")
    private String atom_link;

    private String title;
    private String description;

    private Image image;

     public String getLink() {
        return link;
    }

    public void setLink(String link) {
        this.link = link;
    }

    public String getAtom_link() {
        return atom_link;
    }

    public void setAtom_link(String atom_link) {
        this.atom_link = atom_link;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Image getImage() {
        return image;
    }

    public void setImage(Image image) {
        this.image = image;
    }

    public List<String> getItemList() {
        return itemList;
    }

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

    @XStreamImplicit 
     private List<String> itemList;

}

Image.java

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

@XStreamAlias("image")
public class Image {
    private String url;

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }
}

Tester.java

import com.thoughtworks.xstream.XStream;


public class Test1 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Channel channel=new Channel();
        Image image=new Image();
        image.setUrl("http:://google.com");
        channel.setAtom_link("atomlink");
        channel.setImage(image);
        channel.setDescription("desc");
         XStream xstream = new XStream();
         xstream.alias("channel", Channel.class);

         System.out.println(xstream.toXML(channel));


    }

}

выход:-

<channel>
  <atom__link>atomlink</atom__link>
  <description>desc</description>
  <image>
    <url>http:://google.com</url>
  </image>
</channel>

проверьте это... это может быть не точный ответ, но вы можете получить что-то отсюда.. Если я получу ваш ожидаемый файл XML точно.. я могу предоставить вам лучшее решение

Другие вопросы по тегам