gpt4 book ai didi

java - 以 HTML 格式显示 XML 文件的差异

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

我正在编写此代码,以 HTML 格式显示两个文件中的差异。我正在使用 Java 进行此操作。这就是我到目前为止所做的。 1.我正在将文件内容读入 String Arrays 。 2、利用LCS算法求提到的最长子序列矩阵here 3. 使用字符串生成器创建 Html head 4. 使用 LCS 矩阵,将字符串附加到字符串缓冲区。 5.如果两个字符串存在差异,我会更改 tr bgcolour 以使用不同的颜色显示它。

当我使用普通文本文件时,这工作得很好。

代码片段:

        sb.append("<tr bgcolor='#FF0000'>");
sb.append("<td>");
sb.append( x[i++]);
sb.append("</td>");
sb.append("<td>");
sb.append( y[j++]);
sb.append("</td>");
sb.append("</tr>");

但是现在如果我在两个 Xml 文件之间进行比较,我将无法看到内容。

如果文本正常,则形成的HTML为:

 <td>normaltext</td>

//正确渲染

如果 xml 文件包含

<Hello>

形成的html包含的标签

<td><Hello></td>

由于浏览器无法正确渲染它。

我该如何解决它?任何指示都会有所帮助。

最佳答案

替换<通过&lt;>通过&gt;

问题已解决。

<小时/>

为了更具体地说明您的情况,只需执行以下操作:

    sb.append("<tr bgcolor='#FF0000'>");
sb.append("<td>");
sb.append( x[i++].replaceAll("<", "&lt;").replaceAll(">", "&gt;"));
sb.append("</td>");
sb.append("<td>");
sb.append( y[j++].replaceAll("<", "&lt;").replaceAll(">", "&gt;"));
sb.append("</td>");
sb.append("</tr>");
<小时/>

根据评论,这会更好:

    sb.append("<tr bgcolor='#FF0000'>");
sb.append("<td>");
sb.append( x[i++].replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;"));
sb.append("</td>");
sb.append("<td>");
sb.append( y[j++].replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;"));
sb.append("</td>");
sb.append("</tr>");
<小时/>

不替换 <= 和 >=,这是可行的解决方案,但有点令人讨厌:) :

    String x = "<Hello>&<=<blabbalal>";
System.out.println(x.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll("&gt;=", ">=").replaceAll("&lt;=", "<="));

有这样的输出:

&lt;Hello&gt;&amp;<=&lt;blabbalal&gt;

关于java - 以 HTML 格式显示 XML 文件的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26655778/

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