java - 不要在 JLabel 中使用 XML 文件读取 '<'

标签 java html xml swing jlabel

我有一个包含符号“< (<)”的 XML 文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<parent>
    <child>&lt;100</child>
</parent>

我使用以下方法读取该值:

public String getValue(String parentTag, int parentIndex)
{
   Node root = m_doc.getElementsByTagName(parentTag).item(parentIndex); 
   return root.getTextContent();
}

并将其显示在带有 HTMLJLabel 中:

JLabel label = new JLabel("<html><b>"+docXml.getValue("negative", 0) +"</b></html>");

但是该值的显示没有符号<。如果不使用 HTML,则会显示它。如何让这个符号用HTML显示?谢谢!
附注符号 > (>) 显示正确!

最佳答案

Node.getTextContent()已经返回未转义的文本。因此,当您尝试从 <child> 获取文本时,你得到的结果是 <100 .

JLabel 假定 < 是 html 元素的无效开始标记的一部分,并将其删除。

使用 &gt 时可以看到正确的文本,因为> JLabel 可以接受.

要解决此问题,请在将文本添加到 JLabel 之前,您可以转义从 XML 文档中获得的内容。

例如使用StringEscapeUtils.escapeXml (请注意,这只会转义 &lt; &gt; &amp; &apos; &quot;人物。否则看看escapeHtml )

JLabel label = new JLabel("<html><b>"+StringEscapeUtils.escapeXml(docXml.getValue("negative", 0)) +"</b></html>");

不幸的是 Node.getTextContent() 中缺少此信息文档,因此如果您的 XML 包含转义文本,您必须始终小心,并且不要依赖返回的文本。

关于java - 不要在 JLabel 中使用 XML 文件读取 '&lt;',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29051062/

相关文章:

java - 我无法在 Android Studio 中为我的应用程序设置图标

java - 在 Vaadin 7 中调用 VaadinSession getAttribute 时需要锁定

javascript - 无法选择弹出框字段和选项

html - 如何在水平无序列表之间插入一个空格

c# - 从 XLIFF 文件 C# 中解析 XML 对象

java - 在 Asynctask 的 onPostExecute() 方法中更改 fragment

java - java中的二叉搜索树,主要不是从BST读取

html - 如何使用 Google 开发者工具在本地主机上定位 HTML 文件?

java - 在 Java 中解析 XML dateTime 的最佳方法是什么?

xml - 如何为 XML Schema 中的 fractionDigits 限制指定最小值?