我正在使用JSoup来解析HTML。它通常工作正常,但在一些显式示例中,它在解析后更改HTML中的元素序列。这是简单的代码:
IPN was not sent, and the handshake was not verified. Please review your information.
以下是str1和str2的值。
STR1:
String str1 = originalHtmlFragment;
Document doc = Jsoup.parseBodyFragment(str1);
String str2 = doc.html();
STR2:
<table>
<tbody>
<tr>
<th>
<p> </p>
<p>10</p>
</th>
</tr>
<tr>
<td colspan="1">
<p>
<ac:macro ac:name="my-macro">
<ac:parameter ac:name="outer-values">Page content</ac:parameter>
<ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter>
<ac:rich-text-body>
<p>a1</p>
</ac:rich-text-body>
</ac:macro>
</p>
</td>
</tr>
</tbody>
</table>
请注意,在第二个代码示例中,a1位于ac:macro标记之外。 我如何在JSoup中解决这个问题?
答案 0 :(得分:0)
您尝试解析不是真正HTML的字符串,因为ac:macro
不是允许的标记名称。 JSoup试图做一些明智的事情,但在你的情况下,它显然在这次尝试中失败了。如果您可以切换到XMLparser实现,则可以按预期获得结果:
Document doc = Jsoup.parse(str1,"",Parser.xmlParser());