gpt4 book ai didi

java - 将 XML 数据转换为 Writeable 的高效方法

转载 作者:行者123 更新时间:2023-12-01 15:53:28 24 4
gpt4 key购买 nike

我正在研究一种实用方法,该方法允许将 XML 数据转换为格式化的 String ,在您认为这对于 javax.xml.transform.Transformer< 来说是一项微不足道的任务之前 让我解释一下我所面临的具体限制。

转换开始时输入数据不存在。实际上,它表示为 groovy.lang.Writeable ( javadoc ) 实例,我可以将其输出到任何 java.io.Writer 实例中。方法的签名如下所示:

static String serializeToString(Writable source)

我当前的解决方案涉及几个步骤,并且实际上提供了预期的结果:

  1. 创建StringWriter,在那里输出source并转换为String
  2. 基于此字符串创建 javax.xml.transform.stream.StreamSource 实例(使用 StringReader)
  3. 创建新的 StringWriter 实例并将其包装到 javax.xml.transform.stream.StreamResult
  4. 使用 javax.xml.transform.Transformer 实例执行转换
  5. StringWriter转换为String

虽然解决方案确实有效,但我对其效率并不满意。这个方法会经常使用,我确实想优化它。我想避免的是必须沿线执行多次转换:

  1. WriteableString(未格式化)
  2. StringStreamSource(这意味着数据将被再次解析)
  3. 再次从 StreamSourceString(格式化)

所以问题是是否可以构建类似管道的流程来消除不必要的转换?

更新#1:

为了提供更多上下文,我使用 StreamingMarkupBuilder.bindNode() 方法将 GPathResult 实例转换为格式化字符串,该方法生成 Writable 实例。不幸的是,无法指定 StreamingMarkupBuilder 来生成格式化输出。

更新#2:

我确实尝试过基于 PipedWriter + PipedReader 的实现,但实验并未显示出这种方法带来的速度提升。看起来在本例中这并不是那么关键的问题。

最佳答案

不知道“XML 数据”的确切含义,但您可以考虑直接将“尚未实现”的内容表示为 SAXSource,从而绕过“to-string”和“parse-string” “脚步。

关于java - 将 XML 数据转换为 Writeable 的高效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5540944/

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