问题标签 [xslcompiledtransform]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - XslCompiledTransform:如何读取转换后的文本,而不保存到文件
输入:我的输入文件是 XML 文件。它们由 SSIS 中的 foreach 文件枚举器读取。
过程:SSIS 脚本组件 (C#) 从变量中读取文件名。我创建了一个 XSL 文件,用于将 XML 转换为必要的格式。脚本任务使用 XSL 文件,并将 XML 文件转换为文本
这是我使用的一段代码:
问题:
正如预期的那样,这会将转换后的文本内容写入上述输出文件。我想通读每一行,处理它,然后加载到数据库。
现在,写入文件,再次读取它是一种开销。
有没有办法可以将转换后的内容读入任何对象并对其进行迭代(而不实际写入文件)?像流什么的?
或者:
尽管SSIS“XML 任务”具有“操作类型 = XSLT”功能,但如果“SourceType”是变量并且我在变量中给出带有路径的文件名,则它不会读取 XML。它期望变量中的 XML 内容。任何可能的解决方法?
请在评论中询问具体细节,以便我进行相应更新。谢谢你。
c# - OpenXML 2.5 XSL 转换 Word 2013 C# 的问题
谁能帮我解决这个问题?我之前没有对 OpenXML 做过任何事情,这让我很困惑!
我有一个 Word 文档,它是一张发票。在本文档中,我有常用的标题等,以及需要使用来自 SQLServer 的 XML 数据集的数据填充的“字段”。
我从 docx 中获取了 word/document.xml 的副本,并对文件进行了建议的更改,以将其转换为 XSLT 文件。
变成
并且文件以
然后,我更改了一些“字段”以显示我想要合并数据的位置。
一切安好……
当我运行它时,我得到了一个看起来不错但无法在 Word 2013 中打开的新文件。我将 document.xml 从 docx 中拉出并尝试打开它。这给了我一个未指定的错误行 1 列 1257。
从那以后,我尝试了各种各样的事情,包括创建一个没有合并字段的 XSLT,只设置了页眉和页脚,我得到了同样的结果。
我已经尝试了几个不同复杂性的不同标题,并且总是得到相同的错误。
当我跟踪错误时,它在这个标记行中
以第 1257 列结束:
mc:Ignorable="w14 w15 wp14">
我检查了命名空间是否都已声明,但我看不到或理解出了什么问题
有任何想法吗?谢谢
c# - C# Parallel.ForEach XslCompiledTransform 与 Saxon 9.7.0.6 HE
由于 XPath 2.0/XSLT 2.0,我想将我的 XslCompiledTransform 迁移到 Saxon 9.7.0.6 HE,但它比 .NET 慢得多。
我使用默认副本 ident XSLT 和 15.000 个 xml 文件测试了每个版本:
我希望我做错了什么,XslCompiledTransform:
撒克逊版本:
更新
我在没有 Visual Studio 调试的情况下进行了另一项测试,结果好多了:
所以主要的减速是调试器本身,但仅限于撒克逊人。现在它只需要 .NET 版本的两倍时间,它不是超级棒,但我想我可以接受。
我能做些什么来让撒克逊人更快吗?也许玩代码或使用EE而不是HE?
这里有一些详细的基准信息,主要的性能问题是 DocumentBuilder.Build 方法。但即使是转换本身也比 .NET 版本慢两倍多:
撒克逊人:
。网:
c# - 如何让 XslCompiledTransform 在根元素中包含 xmlns?
我正在尝试使用 XslCompiledTransform C# 类将一个 xml 文件转换为另一个。但是,不会传输 xmlns 属性。
我的代码:
XSLT:
输入:
这是实际的输出:
这是所需的输出:
c# - 替换元素的值时,XmlCompiledTransform 重复命名空间
我正在尝试使用 XslCompiledTransform C# 类将一个 xml 文件转换为另一个。但是,命名空间第二次包含在我的一个元素(SerialNum)中。我究竟做错了什么?
这是我的 C# 代码:
这是我的 XSL:
输入:
输出:
期望的输出:
c# - 从 XSLT 样式表“返回”值
我正在使用XSLTCompiledTransform
如下所示的对象将 XML 报告转换为 html 报告。我正在使用XsltArgumentList
将值从 C# 代码传递到 XSLT,但我还需要将值从 XSLT 表“返回”到 C# 代码。
我还没有找到任何记录可以做到这一点的方法。我可以 使用 LINQ 直接从DataTable
编写 XML 的地方获取我需要的值,但我更愿意从 XSL 中提取它们。这将是更少的代码,我将避免在两个不同的地方计算相同的值。
c# - 将命名空间添加到根元素
我正在编写一个 XSLT 转换,我希望在根元素上定义所有命名空间前缀。默认情况下,MS 似乎会在 XML 层次结构中的第一个元素上创建一个新的前缀定义以使用该模式。这意味着如果这些元素与同一模式的共享祖先不相关,则可以在多个元素上引用相同的模式。
通过像这样对根元素进行编码,所有工作都按预期工作:
但是我找不到任何方法来使用xsl:element
; 例如
xls:element
是否可以针对除该元素本身之外的模式声明命名空间前缀?
完整示例
XML
XSLT
结果
期望的结果
或者
c# - XslCompiledTransform 加载方法抛出“拒绝访问异常”
我有一个在 .Net 4.6 下运行的 WinForms 应用程序 (x64)。我正在XslCompiledTransform
使用 XSLT 文件来操作一些 XML 文件。
XSLT 转换对许多 XML 文件并行完成,如下所示:
正如我从 MSDN 中了解到的,Load 方法会在文件夹下创建临时文件%TEMP%
(如果在对象上启用了脚本XslCompiledTransform
),一旦对方法的调用完成,这些文件就会被删除Load
。
我的问题是,即使在锁定Load
方法时,我也会遇到以下异常:
拒绝访问路径“C:\Users\erezk\AppData\Local\Temp\iapqiwqu.tmp”。
该文件Load
是生成调用的临时文件之一。
有没有人遇到过这个?
c# - 在 XslCompiledTransform 中选择对 XSLT 文件的更改
我有一个 XSLT 文件,我对它做了一些小的修改。
XSLT 中的更改似乎在编译时没有被采纳。
不确定这应该如何工作..您是否需要在此函数中编写其他内容才能获取新的更改?
xml - vb.net 应用程序将 xml 转换为文本
在创建控制台应用程序以从文件夹中读取 xml 文件并将它们转换为文本文件并使用 xsl 文件将它们保存在单独的文件夹中进行转换时需要帮助。
我尝试了多种选择,但没有任何效果。以下是我目前拥有的。
解决此问题的任何帮助都会有所帮助。