我目前正在研究一个暗示 XML 提要解析(Atom 2005)的项目,我正在使用 Rome 来执行此操作。
我目前有两种要解析的 XML 结构。
第一种:
<?xml version="1.0" encoding="UTF-8"?>
<feed
xmlns="http://www.w3.org/2005/Atom"
xml:base="..." >
<id>...</id>
<title type="text" >...</title>
<entry xmlns="http://www.w3.org/2005/Atom" >
<id>...</id>
</entry>
<entry xmlns="http://www.w3.org/2005/Atom" >
<id>...</id>
</entry>
...
</feed>
(一个提要,包含多个条目)
第二种:
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" >
<id>...</id>
</entry>
(一个条目,但它不包含在“提要”中)
我的目标是制作一个解析输入 XML 并获取信息的 bean“MyEntry”。我的理想是拥有一个构造函数(例如,它以 SyndEntry 作为参数)。
我这样做了:
public MyEntry( SyndEntry e ) {
_entry = e;
}
当我获得第一种 XML 提要时,我可以获得“SyndEntry”对象:
SyndFeedInput feed_input = new SyndFeedInput();
...
SyndFeed feed = feed_input.build(xml_file);
for ( SyndEntry e : feed.getEntries() ) {
// I can get SyndEntries from here
}
--> 但是对于第二种类型的 XML,没有“提要”容器,我找不到任何直接从 XML 构建 SyndEntry 的方法(比如“SyndEntryInput”?)。我得到的是“SyndFeed”而不是“SyndEntry”,即使所有信息都可以访问。
因此,我正在寻找一种将 SyndFeed 转换为 SyndEntry(或反向)的方法,使用超类(我找不到 SyndEntry 和 SyndFeed 共有的任何超类)或专用转换器。
我目前的解决方案是创建两个构造函数(一个采用“SyndFeed”,另一个采用“SyndEntry”),但它非常难看,因为我有一个方法“getSyndData()”,它理想地返回用于构造的对象,用于检索通用信息(即:getSyndData().getTitle())
任何帮助或想法将不胜感激