0

私は現在、XML フィードの解析 (Atom 2005) を意味するプロジェクトに取り組んでおり、これを行うために Rome を使用しています。

現在、解析する XML 構造は 2 種類あります。

最初のタイプ:

<?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>

(複数のエントリを含む 1 つのフィード)

2 番目のタイプ:

<?xml version="1.0" encoding="UTF-8"?>

<entry xmlns="http://www.w3.org/2005/Atom" >
    <id>...</id>
</entry>

(1 つのエントリですが、「フィード」には含まれません)

私の目的は、入力 XML を解析して情報を取得する Bean "MyEntry" を作成することです。私の理想は、コンストラクターを 1 つ持つことです (たとえば、引数として 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
}

--> しかし、2 番目のタイプの XML には「フィード」コンテナがなく、XML から SyndEntry を直接構築する方法が見つかりません (「SyndEntryInput」のように?)。すべての情報にアクセス可能なままでも、「SyndEntry」ではなく「SyndFeed」が表示されます。

したがって、スーパークラス (SyndEntry と SyndFeed に共通するスーパークラスが見つかりません) または専用コンバーターを使用して、SyndFeed を SyndEntry に変換 (またはその逆) する方法を探しています。

私の現在の解決策は、2 つのコンストラクターを作成することです (1 つは「SyndFeed」を受け取り、もう 1 つは「SyndEntry」を受け取ります)。一般的な情報 (例: getSyndData().getTitle())

どんな助けやアイデアもいただければ幸いです

4

1 に答える 1

0

ここで自分自身に答えました:ROMEでSyndEntryのXML文字列値を取得する

たぶん私は正しい質問をしなかった

于 2013-04-26T14:02:23.473 に答える