xslt - 从 XML 创建 CSV 时 XSL 的性能
问题描述
我正在尝试使用 PROC XSL 并行处理 8 个 XML。每个 XML 都有不同的结构和复杂的分层路径。我试图从每个 XML 中创建 CSV。
我创建的 XSLT 工作表使用的是为 XML 提供的 XSD。但实际的 XML 文件没有在 XSD 中指定的所有列的值,并且某些列根本没有出现在 XML 中。
例如:基于 XSD,我们希望 XML 如下所示
<Master2>
<Child1>
<tag1>name1</tag1>
<tag2>name2</tag2>
<TypeArray>
<value>1</value>
<value>13</value>
</TypeArray>
<TypeArray1>
<Quanutityvalue>1</Quanutityvalue>
<Qualityvalue>13</Qualityvalue>
</TypeArray1>
</Child1>
</Master2>
但是我们收到如下
<Master2>
<Child1>
<tag1>name1</tag1>
<TypeArray>
<value>1</value>
<value>13</value>
</TypeArray>
</Child1>
</Master2>
当我们创建 XSLT 时,我们创建了所有列。我们收到的 XML 中有多个表的数据。我们从每个 XML 中创建 4 个 csv。每个 CSV 有大约 270 列。处理 8 个文件的总时间为 3 分 50 秒。
XSL 是否也需要更多时间来读取 NULL 标记?还是时间合理?我在 SAS 中使用 PROC XSL 选项
示例 XSLT
<xsl:template match="/">
<xsl:text>tag1,tag2,TypeArray,Quanutityvalue,Qualityvalue</xsl:text>
<xsl:text>
</xsl:text>
<xsl:for-each select="Master1/Master2/Child1">
<xsl:call-template name="CsvEscape"><xsl:with-param name="value" select="normalize-
space(tag1)"/></xsl:call-template>
<xsl:text>,</xsl:text>
<xsl:call-template name="CsvEscape"><xsl:with-param name="value" select="normalize-
space(tag2)"/></xsl:call-template>
<xsl:text>,</xsl:text>
<xsl:call-template name="CsvEscape"><xsl:with-param name="value" select="TypeArray/value"/>
<xsl:text>,</xsl:text>
<xsl:call-template name="CsvEscape"><xsl:with-param name="value" select="TypeArray1/Quanutityvalue"/>
<xsl:text>,</xsl:text>
<xsl:call-template name="CsvEscape"><xsl:with-param name="value" select="TypeArray1/Qualityvalue"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:模板>
谢谢
解决方案
推荐阅读
- python - 如何在 Python 中以非常特定的方式对列表进行排序?
- sql - 将 ratio_to_report 与 3 个或更多分组 Oracle SQL 一起使用
- java - 更改 WatchService 的状态
- javascript - 按钮单击不适用于动态创建的表格行
- r - 如何判断数据框的所有 colSums 或 rowSums(或其他聚合)在 R 中是否相等?
- kubernetes - 如何获取 nodeSelector 的 JsonPath
- oracle - 滞后和领先到下个月
- python - 使用 BeautifulSoup 在 ContentPane 中查找没有标签的文本
- database - Oracle 索引几乎没有加速聚合计算
- jenkins - 错误 Slack 从全局配置中发送管道步骤配置值