我有一个包含符号“< (<)”的 XML 文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<parent>
<child><100</child>
</parent>
我使用以下方法读取该值:
public String getValue(String parentTag, int parentIndex)
{
Node root = m_doc.getElementsByTagName(parentTag).item(parentIndex);
return root.getTextContent();
}
并将其显示在带有 HTML 的 JLabel 中:
JLabel label = new JLabel("<html><b>"+docXml.getValue("negative", 0) +"</b></html>");
但是该值的显示没有符号<。如果不使用 HTML,则会显示它。如何让这个符号用HTML显示?谢谢!
附注符号 > (>) 显示正确!
最佳答案
Node.getTextContent()
已经返回未转义的文本。因此,当您尝试从 <child>
获取文本时,你得到的结果是 <100
.
JLabel 假定 < 是 html 元素的无效开始标记的一部分,并将其删除。
使用 >
时可以看到正确的文本,因为>
JLabel
可以接受.
要解决此问题,请在将文本添加到 JLabel
之前,您可以转义从 XML 文档中获得的内容。
例如使用StringEscapeUtils.escapeXml (请注意,这只会转义 <
>
&
'
"
人物。否则看看escapeHtml )
JLabel label = new JLabel("<html><b>"+StringEscapeUtils.escapeXml(docXml.getValue("negative", 0)) +"</b></html>");
不幸的是 Node.getTextContent() 中缺少此信息文档,因此如果您的 XML 包含转义文本,您必须始终小心,并且不要依赖返回的文本。
关于java - 不要在 JLabel 中使用 XML 文件读取 '<',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29051062/