使用JAXB解析包含;等元素的XML文档
it1352
帮助7人
问题说明
<?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;
}
}
另一个类是
@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;
}
,最后一个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中提取的所有值都返回空.....
正确答案
#1
您的Rss
和Channel
类在我看来还可以。 问题出在Item
类中,尤其是其具有命名空间的元素中。
为<g:id>
元素建模时,不得使用@XmlElement(name = "g:id")
。 相反,您需要使用@XmlElement(name = "id", namespace = "http://base.google.com/ns/1.0")
。 这与XML文件中给定的命名空间定义xmlns:g="http://base.google.com/ns/1.0"
相对应。
顺便说一句:@XmlRootElement
类上不需要@XmlRootElement
。 您只需要在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)
}
您可以在此处找到更多背景信息:
- XML Namespaces大体
- OracleJAXB tutorial一般用于JAXB
@Xml...
annotations的Javadoc- 有关更多信息,只需在Internet上搜索JAXB教程命名空间
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /reply/detail/tanbk
系列文章
更多
同类精品
更多
-
YouTube API 不能在 iOS (iPhone/iPad) 工作,但在桌面浏览器工作正常?
it1352 07-30 -
iPhone,一张图像叠加到另一张图像上以创建要保存的新图像?(水印)
it1352 07-17 -
保持在后台运行的 iPhone 应用程序完全可操作
it1352 07-25 -
使用 iPhone 进行移动设备管理
it1352 07-23 -
在android同时打开手电筒和前置摄像头
it1352 09-28 -
检查邮件是否发送成功
it1352 07-25 -
扫描 NFC 标签时是否可以启动应用程序?
it1352 08-02 -
Android微调工具-删除当前选择
it1352 06-20 -
Android App 和三星 Galaxy S4 不兼容
it1352 07-20 -
希伯来语的空格句子标记化错误
it1352 06-22