2012-03-27 68 views
2

我試圖將一些HTML內容放入使用ROME及其modules<content:encoded>標籤中。到目前爲止,我已經成功地將mediaRSS和geoRSS放入Feed中,但我的內容沒有顯示出來。放入內容:使用ROME編碼在RSS提要中

這裏是我的代碼:

ContentModule contentModule = new ContentModuleImpl(); 
List<ContentItem> contents = new ArrayList<ContentItem>(); 
List<String> contentValueDOM = new ArrayList<String>(); 
ContentItem content = new ContentItem(); 

content.setContentValue("<p>Some text here</p>"); 
content.setContentEncoding("text/html"); 
content.setContentAbout("Paragraph"); 
content.setContentValueDOM(contentValueDOM); 
contents.add(content); 

contentModule.setContents(contents); 
contentModule.setContentItems(contents); 
entry.getModules().add(contentModule); 

這裏是我的輸出

<item> 
    <title>Example page</title> 

    <link>http://www.example.com/news/2012/march/example-page.html</link> 
    <description>Introduction</description> 
    <category>news</category> 
    <pubDate>Tue, 27 Mar 2012 08:18:52 GMT</pubDate> 
    <guid>http://www.example.com/news/2012/march/example-page.html</guid> 
    <dc:date>2012-03-27T08:18:52Z</dc:date> 

    <content:items> 
    <rdf:Bag> 
     <rdf:li> 
     <content:item rdf:about="Paragraph"> 
      <content:encoding rdf:resource="text/html" /> 
      <rdf:value /> 
     </content:item> 
     </rdf:li> 
    </rdf:Bag> 

    </content:items> 
    <geo:lat>52.09161879618039</geo:lat> 
    <geo:long>5.1141280958007655</geo:long> 
    <media:content medium="image" fileSize="16029" height="500" type="image/jpeg" width="399" url="http://www.example.com/binaries/content/gallery/image.jpg"> 
    <media:description type="plain/text" /> 
    <media:thumbnail url="http://www.example.com/binaries/content/gallery/thumbnail/image.jpg" /> 
    </media:content> 
    <media:content medium="video" expression="full" type="application/x-shockwave-flash" isDefault="true" url="http://www.youtube.com/v/jQq4ju-vupY?rel=0"> 

    <media:player url="http://www.youtube.com/v/jQq4ju-vupY?rel=0&amp;feature=youtube_gdata_player" width="520" height="390" /> 
    </media:content> 
</item> 

回答

2

這似乎工作:

List<String> contents = new ArrayList<String>(); 
contents.add("<p>Some text here</p>"); 
ContentModule module = new ContentModuleImpl(); 
module.setEncodeds(contents);   
entry.getModules().add(module); 

然而上述輸出使用Updated Syntax而非飼料Original Syntax。隨着更新過的語法你得到的東西看起來像(這包含<內容:編碼>標籤):

<item> 
    <content:encoded><![CDATA[<p>Some text here</p>]]></content:encoded> 
</item> 

當我試圖用ContentItem它不支持原始語法(使用模塊-0.3.2)像我一樣,我發現ContentModuleGenerator要求setContentValueDOM包含要輸出的內容的值。還可以看出這個內容必須澆注料org.jdom.Content(例如,你需要調用setContentValueDOM(名單< org.jdom.Content>))。如果你改變了上面的代碼示例

<item> 
    <title>Example page</title> 
    <content:items> 
    <rdf:Bag> 
     <rdf:li> 
     <content:item rdf:about="Paragraph"> 
      <content:format rdf:resource="http://www.w3.org/TR/html4/" /> 
      <rdf:value><![CDATA[<p>Some text here</p>]]></rdf:value> 
     </content:item> 
     </rdf:li> 
    </rdf:Bag> 
    </content:items> 
</item> 

:作爲org.jdom.CDATA子類org.jdom.Content你可以做這樣的事情:

ContentModule contentModule = new ContentModuleImpl();     
List<ContentItem> contents = new ArrayList<ContentItem>(); 
List<Content> contentValueDOM = new ArrayList<Content>();   
String value = "<p>Some text here</p>"; 
ContentItem content = new ContentItem(); 
content.setContentValue(value); 
content.setContentAbout("Paragraph"); 
content.setContentFormat("http://www.w3.org/TR/html4/"); 
CDATA valueElement = new CDATA(value); 
contentValueDOM.add(valueElement); 
content.setContentValueDOM(contentValueDOM);  
contents.add(content); 
contentModule.setContents(contents); 
contentModule.setContentItems(contents); 
entry.getModules().add(contentModule); 

產生用元素替換CDATA部分並添加適當的格式和編碼信息:

//content.setContentFormat("http://www.w3.org/TR/html4/"); 
//CDATA valueElement = new CDATA(value); 
content.setContentFormat("http://www.w3.org/1999/xhtml"); 
content.setContentEncoding("http://www.w3.org/TR/REC-xml#dt-wellformed"); 
Element valueElement = new Element("p"); 
valueElement.setText("Some text here"); 

你將結束與XML顯示<內容:編碼>標籤:

<item> 
    <title>Example page</title> 
    <content:items> 
    <rdf:Bag> 
     <rdf:li> 
     <content:item rdf:about="Paragraph"> 
      <content:format rdf:resource="http://www.w3.org/1999/xhtml" /> 
      <content:encoding rdf:resource="http://www.w3.org/TR/REC-xml#dt-wellformed" /> 
      <rdf:value> 
      <p>Some text here</p> 
      </rdf:value> 
     </content:item> 
     </rdf:li> 
    </rdf:Bag> 
    </content:items> 
</item> 
+0

感謝馬克。完美工作! – artjulian 2012-03-28 13:37:20