gpt4 book ai didi

java - 在 CDATA 部分打印多个标签

转载 作者:行者123 更新时间:2023-12-01 15:03:58 25 4
gpt4 key购买 nike

我有一个旧的 xml 文件,它是在 java 中手动生成的。它的树结构是这样的。

<?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 列。我正在尝试用

修复它
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>

最佳答案

您需要将CDATA部分的内容单独编码为String,并将该String放入CDATA中,像这样的东西:

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));

关于java - 在 CDATA 部分打印多个标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13233424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com