【问题标题】:How to save XML to a file如何将 XML 保存到文件中
【发布时间】:2012-05-17 00:08:36
【问题描述】:

如何将翻译后的 XML 保存到磁盘上的实际文件中?我是 XML/XSLT 的新手,我正在努力解决这个问题。我似乎找不到任何适合我的例子。例如,我只想将文件保存到 c:\temp\text.xls。我该如何保存它?我是否必须使用 java 或 .net 或其他一些编程语言/api?我希望 XSL 只是保存文件。

【问题讨论】:

    标签: xml file xslt save msxsl


    【解决方案1】:

    XSL 不能自己做任何事情。它只是将 XML 文件转换为其他文件的定义。要对它进行任何操作,您需要在程序中运行 XSL 转换,或者使用 XML Spy 之类的工具。

    更新

    这是我几年前用 VBScript 编写的一个简单示例:

    Dim xml, xsl, htm, fso, flOut
    
    Set xml = CreateObject("MSXML2.DOMDocument")
    Set xsl = CreateObject("Msxml2.DOMDocument")
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    xml.load WScript.Arguments(0)
    xsl.load WScript.Arguments(1)
    htm = xml.transformNode(xsl)
    
    Set flOut = fso.CreateTextFile(WScript.Arguments(2))
    flOut.Write htm
    flOut.close
    

    我将其命名为 xmlTrfm.vbs。像这样使用它:

    xmlTrfm.vbs [sourceFileName].xml [transformFileName].xsl [outputFileName].[ext]
    

    输出文件名的文件扩展名显然取决于 XSL 转换生成的格式,通常是 xml、html 或 txt,但几乎可以是任何格式。

    【讨论】:

    • 也感谢您提供示例代码。这是最值得赞赏的。这正是我想知道的。
    【解决方案2】:

    几乎每个 XSLT 处理器都允许从命令行启动转换。参数之一是保存转换结果的文件。

    示例

    1. 撒克逊 9.xjava net.sf.saxon.Transform -s:source -xsl:stylesheet -o:output

    2. MSXML6msxsl.exe %xml% %xsl% -o %out% -u '6.0' -t %param[ name="value"]%

    3. XQSharpxslt.exe -s %xml% -o %out% -r 1 -t %xsl% %param[ name="value"]%

    4. .NET 2.0+ (XslCompiledTransform): nxslt2.exe %xml% %xsl% -t -o %out%%param[ name="value"]%

    5. AltovaXML (XML-SPY): AltovaXML.exe -xslt2 %xsl% -in %xml% -out %out%%param[ name="value"]%

    在上面的 2. 到 5. 中,%xml% 是包含 XML 文档的文件的路径,%xsl% 是包含主 XSLT 样式表的文件的路径,`%out% 是文件的路径,其中应该保存转换的结果。

    【讨论】:

    • 非常感谢。这也非常适合我需要完成的工作。现在它在知识库中,其他人可以找到它。
    【解决方案3】:

    是的,您无法从 XSLT 中保存它 - 您可以使用哪些语言?

    【讨论】:

      【解决方案4】:

      也许(我推测)您的困难在于您在浏览器中运行 XSLT 转换?在这种情况下,您将遇到困难,因为出于安全原因,浏览器不允许以正常方式写入文件存储。

      如果不是这样,请说明您是如何运行 XSLT 转换的。

      【讨论】:

      • 你是对的,我是在浏览器中运行的。正如我所说,我对这些东西很陌生,我不知道浏览器的限制。你知道它是如何工作的......让它发生......但我以前没有做过......然后学习它。让它发生......那里有人知道如何......哈哈
      猜你喜欢
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多