如何告诉 Java 使用哪个 StringEscapeUtils.escapeXML()?

Posted

技术标签:

【中文标题】如何告诉 Java 使用哪个 StringEscapeUtils.escapeXML()?【英文标题】:How to tell Java which StringEscapeUtils.escapeXML() to use? 【发布时间】:2010-09-27 03:53:24 【问题描述】:

我正在尝试使用 org.apache.commons.lang 中的 StringEscapeUtils.escapeXML() 函数...

该函数有两个版本,一个期望 (Writer, String) 和一个只期望 (String)....

http://commons.apache.org/lang/api/org/apache/commons/lang/StringEscapeUtils.html#escapeXml(java.lang.String)

我正在尝试使用只需要没有 Writer 的 String 参数的版本,但 Java 抱怨我没有给它一个 Writer。

如何在我的程序中使用它,这样我就不需要 Writer?

String escXml = StringEscapeUtils.escapeXml(attr.get());
xml = xml.concat("<"+attr.getID()+">"+escXml+"</"+attr.getID()+">");

我也试过在字符串本身内联。

xml = xml.concat("<"+attr.getID()+">"+StringEscapeUtils.escapeXml(attr.get())+"</"+attr.getID()+">");

这两种尝试都给了我关于它期待 Writer 的错误。谁能帮我解决这个问题?

谢谢, 马特

【问题讨论】:

【参考方案1】:

编译器错误信息到底是什么?

您是否可能正在使用不具有 1 参数方法的不同版本的公共库?

【讨论】:

【参考方案2】:

错误消息告诉您,您将对象传递给方法,而不是字符串。

如果您确定 Object 是一个字符串,那么您需要先将其转换为一个字符串。

如果这不起作用,请发布给您带来麻烦的实际代码。

【讨论】:

【参考方案3】:

如果你的系统中安装了多个版本的java,你应该编译指定版本的java类。

您应该使用这种方式编译您的文件。

javac -target -source

例如 H:>javac -target 1.6 -source 1.6 Testt.java

所以你的目标和源版本被告知 java,所以它会在运行时调用特定的版本类..

【讨论】:

以上是关于如何告诉 Java 使用哪个 StringEscapeUtils.escapeXML()?的主要内容,如果未能解决你的问题,请参考以下文章

如何告诉 React 使用哪个 .env 文件?

我如何告诉 django-admin 使用哪个设置模块?

使用 IPC 如何告诉客户端服务器正在侦听哪个端口?

告诉你今年是哪个生肖年的java程序

告诉 django 使用哪个 db 模板

如何让 Apollo Client 告诉我错误发生在代码的哪个位置?