首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SSJS创建xml文件

使用SSJS创建xml文件
EN

Stack Overflow用户
提问于 2014-05-07 06:36:02
回答 2查看 963关注 0票数 3

我想在服务器上使用SSJS创建一个xml文件。是否有办法这样做?请给出一个示例代码在服务器上创建一个xml文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-07 07:29:02

有相当多的方法。看起来最简单的方法是创建一个看起来像XML的字符串。

下一个是Java类的使用。有文章对此进行了描述。

最后,您可以将萨克斯与小帮助者类一起使用。

让我们知道是怎么回事。

更新:这将是@Michael代码示例的版本:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!-- XPage which is not rendered but returns data like XML, JSON, etc.     -->
<!-- More: http://www.wissel.net/blog/d6plinks/shwl-7mgfbn                 -->

<xp:view xmlns:xp="http://www.ibm.com/xsp/core" rendered="false">
    <xp:this.beforeRenderResponse><![CDATA[#{javascript:try {
    var out = facesContext.getOutputStream();
    var exCon = facesContext.getExternalContext();
    var response = exCon.getResponse(); // get the response context
    // set content type, e.g. ...
    response.setContentType("text/xml"); 
    // set caching option 
    response.setHeader("Cache-Control", "no-cache");
    // write XML output ...
    var result = new biz.taoconsulting.xmltools.SimpleXMLDoc();
    result.setOut(out);
    result.openTag("result");
    result.dateTag("created", new java.util.Date());
    result.addSimpleTag("Author",@UserName);
    result.openTag("FruitList");
    result.addComment("Stephan really likes the fruits example");
    var attributes = new java.util.HashMap();
    attributes.add("name","Durian");
    attributes.add("color","white");
    attributes.add("taste","Don't ask");
    result.addEmptyTag("fruit",attributes);
    result.closeDocument();
    // close the output
    exCon.responseComplete();
    out.close();
} catch (e) {
    print(e.toString());
}}]]>
    </xp:this.beforeRenderResponse>
</xp:view>

请注意这里的差异:

  • 我使用beforeRenderResponse事件
  • 访问outputStream而不是写入器(流在afterRenderResponse事件中不可访问)
  • 设置响应完成以阻止页面进一步输出,因此您只需在页面上键入注释即可。
  • 助手类的使用

当您阅读helper类的源代码时,有什么看起来有点奇怪:为什么不在构造函数中使用输出流,这样就不会错过它?--我今天会添加第二个构造函数,但是如果我喜欢的话,无参数构造函数允许我将该类定义为托管bean。

票数 6
EN

Stack Overflow用户

发布于 2014-05-07 08:25:12

要像@Stefan建议的那样,在字符串中“呈现”XML,我将使用XAgent方法:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!-- XPage which is not rendered but returns data like XML, JSON, etc.     -->
<!-- More: http://www.wissel.net/blog/d6plinks/shwl-7mgfbn                 -->

<xp:view xmlns:xp="http://www.ibm.com/xsp/core" rendered="false">
    <xp:this.afterRenderResponse><![CDATA[#{javascript:try {
    var writer = facesContext.getResponseWriter(), // get a writer object 
        response = facesContext.getExternalContext().getResponse(); // get the response context
    // set content type, e.g. ...
    response.setContentType("text/xml"); 
    // set caching option 
    response.setHeader("Cache-Control", "no-cache");
    // write XML output ...
    writer.write(
        '<?xml version="1.0"?>\n'
        + '<root>\n'
        + '<entity>Example Content</entity>\n'
        + '</root>\n'
    );
    // close the stream
    writer.endDocument();
} catch (e) {
    print(e.toString());
}}]]>
    </xp:this.afterRenderResponse>
    <xp:this.resources>
        <xp:script src="/XBAN.jss" clientSide="false"></xp:script>
    </xp:this.resources>
</xp:view>

只需将他的代码放入新创建的XPage中并对其进行测试。修改writer.write()中的行以满足您的需要。

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

https://stackoverflow.com/questions/23510457

复制
相关文章

相似问题

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