在java中快速将字符串转换为xml
我有一个将xml字符串发送到输出流的应用程序。在将内容写入输出流之前,我必须确保文本节点中的内容(节点值中的内容)不超过固定长度。为此,我编写了一个示例代码来获取文本节点内容,它可以帮助我进行内容验证。但我担心这个示例代码是有效的,因为当我运行eclipse profiler(TPTP)时,它大约需要0.2秒。我想知道是否有更好的方法来提高性能。下面是示例代码在java中快速将字符串转换为xml,java,xml,performance,Java,Xml,Performance,我有一个将xml字符串发送到输出流的应用程序。在将内容写入输出流之前,我必须确保文本节点中的内容(节点值中的内容)不超过固定长度。为此,我编写了一个示例代码来获取文本节点内容,它可以帮助我进行内容验证。但我担心这个示例代码是有效的,因为当我运行eclipse profiler(TPTP)时,它大约需要0.2秒。我想知道是否有更好的方法来提高性能。下面是示例代码 StringWriter stringWriter = new StringWriter(); stringWriter.w
StringWriter stringWriter = new StringWriter();
stringWriter.write("<node src='something'>nodetext goes here</node>");
InputSource src = new InputSource(new StringReader(stringWriter.toString()));
try {
Element doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(src).getDocumentElement();
System.out.println(doc.getChildNodes().getLength());
Node n = doc.getChildNodes().item(0);
System.out.println(n.getNodeValue());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
StringWriter StringWriter=新建StringWriter();
stringWriter.write(“nodetext在此显示”);
InputSource src=新的InputSource(新的StringReader(stringWriter.toString());
试一试{
Element doc=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(src).getDocumentElement();
System.out.println(doc.getChildNodes().getLength());
节点n=doc.getChildNodes().item(0);
System.out.println(n.getNodeValue());
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
使用SAX解析器而不是DOM。请参见示例。通过重用DocumentBuilderFactory,您将获得巨大的性能改进-创建工厂需要搜索类路径。重用DocumentBuilder可能也会有所帮助。然而,将XML创建为字符串、对其进行解析,然后再次对其进行序列化的总体方法在本质上似乎效率低下,我还没有真正理解您对为什么有必要这样做的解释。尝试探索其他库,如nano parser或其他解析技术,如Stax或SAX。无法指出任何特定的技术。对于你来说,这里给出的问题背景非常少。以下是我的应用程序所做的,也许你可以建议一个更好的方法。我的web应用向浏览器发送xml响应。我必须截取响应,以确保xml标记中的文本内容不会超过某个长度。这就是我试图解析xml字符串以截断文本内容(如果有)的原因。我无法更改生成xml字符串的机制。你能想出更好的方法吗?我总是怀疑那些说“我不能改变X”的论点。这些争论导致了软件的结构性衰退。我会挑战这个假设,但这不是我的项目。