JSoup错误地解析了显式HTML

时间:2015-12-02 20:12:56

标签: macros jsoup confluence

我正在使用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中解决这个问题?

1 个答案:

答案 0 :(得分:0)

您尝试解析不是真正HTML的字符串,因为ac:macro不是允许的标记名称。 JSoup试图做一些明智的事情,但在你的情况下,它显然在这次尝试中失败了。如果您可以切换到XMLparser实现,则可以按预期获得结果:

Document doc = Jsoup.parse(str1,"",Parser.xmlParser());