Кажется, это работает:
List<String> contents = new ArrayList<String>();
contents.add("<p>Some text here</p>");
ContentModule module = new ContentModuleImpl();
module.setEncodeds(contents);
entry.getModules().add(module);
Однако вышеприведенный вывод выводит канал, используя Обновленный синтаксис вместо Исходный синтаксис.С обновленным синтаксисом вы получите что-то похожее (содержит tag):
<item>
<content:encoded><![CDATA[<p>Some text here</p>]]></content:encoded>
</item>
Когда я попытался использовать ContentItem , который поддерживает оригинальный синтаксис (с использованием modules-0.3.2), как вы, я обнаружил, что ContentModuleGenerator требует, чтобы setContentValueDOM содержало значение содержимого для вывода.Также представляется, что этот контент должен быть castable to org.jdom.Content (например, вам необходимо вызвать setContentValueDOM (Список) ).Так как 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);
, который производит:
<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>
Если вы измените приведенный выше пример кода, заменив раздел 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>