.net - 超大文件的 XSLT 转换

标签 .net xml oracle xslt

我们使用 XSLT 生成数据报告。数据当前作为 XML 文档存储在 Oracle 中(不使用 XMLTYPE,而是使用普通的 CLOB)。我们选择正确的 XML 文档并创建一个文档:

<DATABASE>
   <XMLDOCUMENT> ... </XMLDOCUMENT>
   <XMLDOCUMENT> ... </XMLDOCUMENT>
   ...
</DATABASE>

在某些情况下,完整的 XML 文档包含 +100000 个文档。这意味着首先将一个巨大的 XML 文档加载到内存中,从而导致各种内存问题。

我们如何防止这种情况发生?我们在 .NET 2.0 中使用 XslCompiledTransform 类。

我知道有两种解析 XML 文档的形式:DOM 和 SAX。但据我所知,SAX 方式不可能与 XSLT 结合使用。 DOM 解析方法迫使我们将整个东西加载到内存中。

我们有哪些选择?首先将完整文档写入磁盘是否有帮助? Oracle 在大型 XSLT 转换方面是否表现更好?

最佳答案

根据您想进行的转换类型,STX可能是 XSLT 的替代品:

Streaming Transformations for XML (STX) is a one-pass transformation language for XML documents. STX is intended as a high-speed, low memory consumption alternative to XSLT, using the W3C XQuery 1.0 and XPath 2.0 Data Model. Since STX does not require the construction of an in-memory tree, it is suitable for use in resource constrained scenarios.

关于.net - 超大文件的 XSLT 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1690194/

相关文章:

android - 是否可以在 android 运行时更新 string.xml 文件?

java - 获取 XML 标签的 XPath

mysql - 数据库架构 : how to make dynamic table according to type?

java - hibernate @EmbeddedId

c# - 这是重载解析中的预期行为吗?

c# - 使用 "using"语法时出现流关闭错误

.net - F# JSON 类型提供程序 : Handling DateTime and TimeZone

main.xml 中的 Android 自定义 xml 标记

c# - HttpPostedFile SaveAs(LocationOnServer) 后文件被锁定

sql - 使用 oracle 查询以平滑平均值填充表中缺失数据的间隙