2012-03-27 64 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