Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.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 如何在jsp页面中将字符串显示为xml_Java_Html_Xml_Jsp_Struts2 - Fatal编程技术网

Java 如何在jsp页面中将字符串显示为xml

Java 如何在jsp页面中将字符串显示为xml,java,html,xml,jsp,struts2,Java,Html,Xml,Jsp,Struts2,我正在处理Struts2项目,在action类中,我将字符串传递给jsp页面。我想在jsp页面中将该字符串内容显示为xml jsp页面:response.jsp <%@ taglib prefix="s" uri="/struts-tags" %> <s:property value="sampleStr" /> 动作类:反应类 public class ResponseAction extends ActionSupport { private stati

我正在处理Struts2项目,在action类中,我将字符串传递给jsp页面。我想在jsp页面中将该字符串内容显示为xml

jsp页面:response.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
    <s:property value="sampleStr" />

动作类:反应类

public class ResponseAction extends ActionSupport {
private static final long serialVersionUID = 1L;
public String sampleStr;

public String execute() throws IOException {
    String responseStr = readStringFile();
    setSampleStr(responseStr);
    return SUCCESS;
}

@SuppressWarnings({ "rawtypes", "unchecked" })
public String readStringFile() throws IOException{
      String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"+
              "<response>"+ "$$" +
              "</response>";
     InputStream inputStream = XmlFormatter.class.getResourceAsStream("/sample.txt");
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName("UTF-16")));
        String s = "";
        List list = new ArrayList();
        String line;
        while ((line = reader.readLine()) != null) {
            list.add(line);
        }
        for (Object s1: list) {
            s= s + s1;
        }
        xmlStr =   xmlStr.replace("$$", s);
        return xmlStr;

}


public String getSampleStr() {
    return sampleStr;
}

public void setSampleStr(String sampleStr) {
    this.sampleStr = sampleStr;
}
}
公共类响应扩展了ActionSupport{
私有静态最终长serialVersionUID=1L;
公共字符串样本;
公共字符串execute()引发IOException{
String responsest=readStringFile();
设置采样器(应答器);
回归成功;
}
@SuppressWarnings({“rawtypes”,“unchecked”})
公共字符串readStringFile()引发IOException{
字符串xmlStr=“\n”+
""+ "$$" +
"";
InputStream InputStream=XmlFormatter.class.getResourceAsStream(“/sample.txt”);
BufferedReader=新的BufferedReader(新的InputStreamReader(inputStream,Charset.forName(“UTF-16”));
字符串s=“”;
列表=新的ArrayList();
弦线;
而((line=reader.readLine())!=null){
列表。添加(行);
}
用于(对象s1:列表){
s=s+s1;
}
xmlStr=xmlStr.replace(“$$”,s);
返回xmlStr;
}
公共字符串getSampleStr(){
返回样本TR;
}
公共无效设置采样器(字符串采样器){
this.sampleStr=sampleStr;
}
}
Struts.xml:

<package name="default" namespace="/" extends="struts-default">
  <action name="PEConsolidation" class="com.metlife.ibit.pe.web.controller.actions.ResponseAction">
  <interceptor-ref name="defaultStack" />
    <result name="success">/WEB-INF/jsps/response.jsp</result>
  </action>
</package>

/WEB-INF/jsps/response.jsp

当我查看response.jsp时,它将返回字符串显示为文本。是否请任何人帮助显示为xml内容?

我认为浏览器试图将xml标记解释为HTML标记,如果不这样做,就会忽略它们

您需要将每个字符替换为
&;lt
&;燃气轮机分别为。您可以在JavaAPI中使用非常有用的
String.replaceAll()
方法


另外,你可以查看这个。在使用JSP和XML技术的开发过程中,这将非常有帮助
s:property
具有HTML、JavaScript和XML的内置转义功能。 默认情况下,它转义为HTML

我认为你想做的根本不是逃避:

<s:property value="sampleStr" escapeHtml="false" />

您还应该检查响应的http头(
“content-type:text/html”
在您的情况下是错误的)

您可以研究使用不同的结果类型,也可以编写自己的结果类型,而不是使用jsp

如果希望将其解释为XML,则需要设置内容配置,同时警告用户/浏览器将根据其设置来处理XML内容。如果您只想将其作为纯文本,例如,不使用语法着色,那么就不要将其作为HTML返回,而是作为纯文本返回。