2012-11-05 50 views
0

我有一箇舊的xml文件,它是用java手動生成的。它的樹形結構就是這樣。在CDATA部分打印多個標籤

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="tvshows.xsl"?> 
<rss version='0.91'> 
<channel> 
<title>xyz.com</title> 
<link>http://www.xyz.com</link> 
<description></description> 
<item> 
<title>Downton Abbey</title> 
<link>http://www.xyz.com</link> 
<description><![CDATA[ 
<tr class='chartContent'> 
<td class='rank'>1.</td> 
<td class='showTitle'>Dexter</td> 
<td class='network'>CBS</td> 
<td class='sumInvIndex'>210</td> 
<td class='earlierWeek'>-13</td> 
<td class='mediaInvIndex'>225</td> 
<td class='socialNetworkInvIndex'>238</td> 
<td class='gammaIndex'>--</td> 
</tr>]]> 
</description> 
</item> 
</channel> 
</rss> 

現在我正在使用JDOM庫來生成確切的格式。但我應該如何處理CDATA []。我發現有近10列的< tr>。我試圖與

CDATA cdata = new CDATA("<tr class='chartContent'>"); 
cdata.append("<td class='rank'>" + current.getRank() + "</td>"); 
cdata.append("\n"); 
cdata.append("<td class='showTitle'>" + current.getShowTitle() + "</td>"); 
cdata.append("<td class='network'>" + current.getNetwork() + "</td>"); 
cdata.append("<td class='sumInvIndex'>" + current.getsumInvIndex() +"</td>"); 
cdata.append("<td class='earlierWeek'>" + current.getearlierWeek() + "</td>"); 
cdata.append("<td class='mediaInvIndex'>" + current.getmediaInvIndex() + "</td>"); 
cdata.append("<td class='socialNetworkInvIndex'>" + current.getsocialNetworkInvIndex() + "</td>"); 
cdata.append("<td class='gammaIndex'>" + current.getgammaIndex() + "</td>"); 
cdata.append("</tr>"); 

Element description = new Element("description"); 
description.setContent(cdata); 

修復它,但有附加標籤欄像

Element rankTD = new Element("td"); 
rankTD.setText(current.getRank()); 
& add rankTD element to cdata . 

的最佳方式生成出使用

Format format = null; 
format = Format.getPrettyFormat(); 
content.add(new Element("td").setText(current.getRank()).setAttribute("class","showTitle")); 
------------------- 
------------------- 
------------------- 
String cdataContent = new XMLOutputter(format).outputString(content); 

輸出後放:

<description><![CDATA[<tr class="chartContent" /> 
<td class="showTitle">1.</td> 
<td class="network">PBS</td> 
<td class="sumInvIndex">210</td> 
<td class="earlierWeek">-13</td> 
<td class="mediaInvIndex">225</td> 
<td class="socialNetworkInvIndex">238</td> 
<td class="gammaIndex">--</td>]]></description> 

回答

1

您需要單獨編碼CDATA部分的內容String,並將該StringCDATA,像這樣:

List<Element> content = new ArrayList<Element>(); 
content.add(new Element("td").setText(current.getRank()); 
... 
String cdataContent = new XMLOutputter().outputString(content); 
description.setContent(new CDATA(cdataContent)); 
+0

由於它的工作原理。但中的子標籤沒有正確的順序(在我的文章中更新)。我正在使用format.getPrettyFormat();並將其包含在新的XMLOutputter(format).outputString(content)中;但訂單依然如此。任何建議/提示。 –