不要在 JLabel 中用 XML-file 读取 '<'
Don't read '<' with XML-file in JLabel
我有一个 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();
}
并将其显示在 JLabel 中 HTML:
JLabel label = new JLabel("<html><b>"+docXml.getValue("negative", 0) +"</b></html>");
但是这个值 没有 符号 <。如果不使用HTML,则显示。如何让这个符号显示为HTML?谢谢!
P.S。符号 > (>) 正确显示 !
Node.getTextContent()
已经 returns 未转义文本。因此,当您尝试从 <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 包含转义文本,请不要依赖返回的文本。
我有一个 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();
}
并将其显示在 JLabel 中 HTML:
JLabel label = new JLabel("<html><b>"+docXml.getValue("negative", 0) +"</b></html>");
但是这个值 没有 符号 <。如果不使用HTML,则显示。如何让这个符号显示为HTML?谢谢!
P.S。符号 > (>) 正确显示 !
Node.getTextContent()
已经 returns 未转义文本。因此,当您尝试从 <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 包含转义文本,请不要依赖返回的文本。