首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不要在JLabel中用XML-file读取'<‘

不要在JLabel中用XML-file读取'<‘
EN

Stack Overflow用户
提问于 2015-03-14 16:08:01
回答 1查看 431关注 0票数 1

我有一个XML文件,其中包含符号'< (<)':

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<parent>
    <child>&lt;100</child>
</parent>

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

代码语言:javascript
复制
public String getValue(String parentTag, int parentIndex)
{
   Node root = m_doc.getElementsByTagName(parentTag).item(parentIndex); 
   return root.getTextContent();
}

并在JLabelHTML中显示它。

代码语言:javascript
复制
JLabel label = new JLabel("<html><b>"+docXml.getValue("negative", 0) +"</b></html>");

但是,显示此值时没有符号<。如果您不使用HTML,则会显示它。如何使这个符号是用显示的?谢谢!

符号> (>)正确显示!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-14 16:53:32

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

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

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

要解决这个问题,在向JLabel添加文本之前,可以将从XML文档中获得的内容转回给您。

例如,使用StringEscapeUtils.escapeXml (请注意,这将只转义&lt; &gt; &amp; &apos; &quot;字符。否则请看一下escapeHtml

代码语言:javascript
复制
JLabel label = new JLabel("<html><b>"+StringEscapeUtils.escapeXml(docXml.getValue("negative", 0)) +"</b></html>");

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29051062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档