gpt4 book ai didi

java - 使用 StringTemplate 创建 XML 的性能?

转载 作者:行者123 更新时间:2023-12-02 08:31:42 26 4
gpt4 key购买 nike

我正在开发一个应用程序,它使用不同的组件来创建XHTML文档,我使用StringTemplate来创建组件的文档数据,然后将它们组合成一个大文档。这是一个组件的示例:

public class BoxImpl extends AbstractContainerImpl implements Box {

private static final StringTemplate template;

static {
template = new StringTemplate(
"<div id=$id$>$content$</div>");
}

public BoxImpl(String id) {
this.setId(id);
}

@Override
public CharBuffer generate() {
// Get a local instance
StringTemplate template = BoxImpl.template.getInstanceOf();
// Set ID attribute of box
template.setAttribute("id", this.getId());
// Generate view for controls inside this container
CharBuffer inner = this.generateInner();
// Add inner data as content attribute
template.setAttribute("content", inner == null ? "" : inner.array());
// Return the result
return CharBuffer.wrap(BoxImpl.template.toString());
}

}

我的问题是,与 StringTemplate 相比,使用 XML DOM 或 StringBuilder 实现这种文档构建是否更有效?

编辑:我不需要 XML 验证。

最佳答案

从性能的角度来看,我很确定 DOM 会比您使用的 StringTemplate 更糟糕。使用 StringBuilder 可能会更快一些,甚至看起来更干净(如果隐式使用):

public CharBuffer generate() {
String content = inner == null ? "" : inner.array();
return CharBuffer.wrap( "<div id=\"" + this.getId() + "\">" + content + "</div>" );
}

最快的方法可能是完全避免创建临时字符串,即直接写入 BufferedOutputWriter 或 PrintWriter。

但总的来说,我建议使用专用的 Stream Writer API 之一来创建 XML 文档。当您将普通字符串直接放入 XML 文档而不注意特殊字符的正确转义时,会出现一些不明显的陷阱。这些 API 通常还提供一种失败高效的实现,击败了大多数简单的方法。此类 API 的示例包括:StAX、Apache XMLIO 和 SAX Transformer。

关于java - 使用 StringTemplate 创建 XML 的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3207823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com