我有一个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,则会显示它。如何使这个符号是用显示的?谢谢!
符号> (>)正确显示!
发布于 2015-03-14 16:53:32
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包含转义文本,则必须始终小心,并且不依赖返回的文本。
https://stackoverflow.com/questions/29051062
复制相似问题