gpt4 book ai didi

xml - vb 2010 XslCompiledTransform 需要从字符串而不是从 URI 磁盘文件进行转换

转载 作者:行者123 更新时间:2023-12-04 05:37:55 24 4
gpt4 key购买 nike

以下代码工作并从本地磁盘获取 XSL 和 XML,并将转换后的 XML 返回到变量 Xtransoutput。

Dim XmlInputPath As String = "C:\Any.XML"
Dim XslInputPath As String = "C:\Any.XSL"

Dim StringWriter As New System.IO.StringWriter
Dim XsltTransformation As New XslCompiledTransform(True)
Dim XsltArgumentList As New XsltArgumentList
Dim Xtransoutput As String = Nothing

XsltTransformation.Load(XslInputPath)
XsltTransformation.Transform(XmlInputPath, XsltArgumentList, StringWriter)
Xtransoutput = StringWriter.ToString

我的问题是我已经将 XML 和 XSL 放在单独的字符串中,它们不在磁盘上,出于安全原因我不能将它们写入磁盘。关于如何让这些从字符串而不是从磁盘文件工作的任何建议?

蒂亚!

最佳答案

这是一个 C# 示例 - 将其转换为 VB 作为练习留给读者 :) )

using System;
using System.IO;
using System.Xml;
using System.Xml.Xsl;

namespace XsltInMemory
{
class XsltInMemory
{
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
XslCompiledTransform xslt = new XslCompiledTransform();

doc.LoadXml("<t/>");

StringReader sr = new StringReader(

@"<xsl:stylesheet version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:output omit-xml-declaration='yes' indent='yes'/>

<xsl:template match='node()|@*'>
<xsl:copy>
<xsl:apply-templates select='node()|@*'/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>"

);

MemoryStream ms = new MemoryStream();

xslt.Load(new XmlTextReader(sr));

xslt.Transform(doc, null, ms);

ms.Flush();
ms.Position = 0;

StreamReader sr2 = new StreamReader(ms);

Console.Write(sr2.ReadToEnd());
}
}
}

关于xml - vb 2010 XslCompiledTransform 需要从字符串而不是从 URI 磁盘文件进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11694424/

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