Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Don';不读'&;lt';使用JLabel中的XML文件_Java_Html_Xml_Swing_Jlabel - Fatal编程技术网

Java Don';不读'&;lt';使用JLabel中的XML文件

Java Don';不读'&;lt';使用JLabel中的XML文件,java,html,xml,swing,jlabel,Java,Html,Xml,Swing,Jlabel,我有一个XML文件,其中包含符号“<(Node.getTextContent()已经返回了未转义的文本。因此,当您尝试从获取文本时,返回的是对于JLabel是可以接受的 要解决此问题,在将文本添加到JLabel之前,您可以转义从XML文档中获得的内容 e、 g.使用(注意,这将仅转义 &; &apos; “字符。否则请查看) JLabel=newjlabel(“+StringEscapeUtils.escapeXml(docXml.getValue(“负”,0))+”); 不幸的是

我有一个XML文件,其中包含符号“<(
Node.getTextContent()
已经返回了未转义的文本。因此,当您尝试从
获取文本时,返回的是
对于
JLabel
是可以接受的

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

e、 g.使用(注意,这将仅转义
&;
&apos;
字符。否则请查看)

JLabel=newjlabel(“+StringEscapeUtils.escapeXml(docXml.getValue(“负”,0))+”);

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

您可能需要转义尝试显示的内容。您可以使用apache commons来处理
StringEscapeUtils.escapeHtml(String)
应该可以做到这一点。否则,您可以手动转义5个更常见的字符:
&
-->
-->,
-->
-->
&&x27;
-->
"
虽然在本例中,escapeHtml和escapeXml将返回相同的内容,但在HTML上下文中使用escapeXml感觉有点奇怪,不是吗?我认为这显然取决于需要。我个人选择escapeXml,只要我只需要基本的5次转义,如果我不确定的话,我就选择escapeHtml。同样在lang3中,也有escapeHtmltml4和escapeHtml3,所以我不必麻烦自己使用哪一个,我只使用escapeXml。哦,谢谢你的详细回复!我需要使用以下内容?
import org.apache.commons.io.FileUtils;import org.apache.commons.lang.StringEscapeUtils;
@Tomas是的,你需要
org.apache.commons.lang.StringEscapeUtils
您不需要FileUtils(至少用于转义)@Tomas是的,这是来自apache commons-。作为替代方案,如果您碰巧使用Spring,您可以尝试此方法或查看此主题-您可以找到一些如何在Java中转义html的替代方案。希望对您有所帮助
<?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();
}
JLabel label = new JLabel("<html><b>"+docXml.getValue("negative", 0) +"</b></html>");
JLabel label = new JLabel("<html><b>"+StringEscapeUtils.escapeXml(docXml.getValue("negative", 0)) +"</b></html>");