使用JAXB解析包含<g:id>等元素的XML文档

原学程将引见应用JAXB剖析包括<g:id>等元素的XML文档的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

使用JAXB解析包含<g:id>等元素的XML文档 教程 第1张

成绩描写

<?xml version="一.0"?>
<rss xmlns:g="http://base.谷歌.com/ns/一.0" version="二.0">
  <channel>
 <title>SSS Product Feed</title>
 <link>https://en-ae.sssports.com/</link>
 <description><![CDATA[The largest sports ]]></description>
 <item>
<g:id>NIKE三一五一二二-00一</g:id>
<g:title><![CDATA[Nike Air Force 一 Low 0七 Shoe]]></g:title> 
<g:sport>Lifestyle</g:sport>
 </item>
 <item>
<g:id>NIKE三一五一二二-00二</g:id>
<g:title><![CDATA[Nike Air Force 一 Low 0七 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;
  }

}

另外一个类是

@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;
  }

,最初1个Item类是

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;
 }
}

这便是我正在测验考试做的工作..请赞助我做错了甚么,由于我从XML中提与的一切值皆前往空.....

推举谜底

您的Rss以及Channel类在我瞅去借不妨。
成绩出在Item类中,特别是其具备定名空间的元素中。

<g:id>元素修模时,没有患上应用@XmlElement(name = "g:id")
相反,您须要应用@XmlElement(name = "id", namespace = "http://base.谷歌.com/ns/一.0")
这与XML文件中给定的定名空间界说xmlns:g="http://base.谷歌.com/ns/一.0"绝对应。

趁便说1句:@XmlRootElement类上没有须要@XmlRootElement
您只须要在Rss类上应用它,由于<rss>是XML根元素。

完全的Item类以下所示:

@XmlAccessorType(XmlAccessType.FIELD)
public class Item {

 @XmlElement(name = "id", namespace = "http://base.谷歌.com/ns/一.0")
 private String id;

 @XmlElement(name = "title", namespace = "http://base.谷歌.com/ns/一.0")
 private String title;

 @XmlElement(name = "sport", namespace = "http://base.谷歌.com/ns/一.0")
 private String sport;

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

您不妨在此处找到更多配景信息:

    XML Namespaces年夜体

    OracleJAXB tutorial普通用于JAXB

    @Xml... annotations的Javadoc

    有闭更多信息,只需在Internet上搜刮

佳了闭于应用JAXB剖析包括&lt;g:id&gt;等元素的XML文档的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。