0

我目前正在研究一个暗示 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())

任何帮助或想法将不胜感激

4

1 回答 1

0

在这里回答自己:Getting XML String value of SyndEntry with ROME

也许我没有问正确的问题

于 2013-04-26T14:02:23.473 回答