无法在VB.net中使用XSLT转换XML
因此,我有XSLT代码(它是正确的,单独测试),并将其硬编码为字符串(这是一个要求,不用麻烦问)。加载XML、XSLT和所有这些东西都没问题 但是当我在无法在VB.net中使用XSLT转换XML,xml,vb.net,xslt,xslt-1.0,Xml,Vb.net,Xslt,Xslt 1.0,因此,我有XSLT代码(它是正确的,单独测试),并将其硬编码为字符串(这是一个要求,不用麻烦问)。加载XML、XSLT和所有这些东西都没问题 但是当我在xmlcomiledtransform.Transform()中使用XmlDocument作为第一个参数时,我得到了关于空白处理的异常 然后,我使用XmlReader作为第一个参数,这是可行的,但当我试图保存转换后的文件时,出现异常,异常是无效的XML文档。文档没有根元素。 代码如下: Dim xsltTransformerCode As
xmlcomiledtransform.Transform()
中使用XmlDocument作为第一个参数时,我得到了关于空白处理的异常
然后,我使用XmlReader作为第一个参数,这是可行的,但当我试图保存转换后的文件时,出现异常,异常是无效的XML文档。文档没有根元素。
代码如下:
Dim xsltTransformerCode As New xsltTransformCode()
Dim myXmlDoc As New XmlDocument()
Dim resultXmlDoc As New XmlDocument()
Dim sr As New StringReader(xsltTransformerCode.transformationXSLTcode())
Dim xr As XmlReader = XmlReader.Create(sr)
Dim xsltTransCompiled As New XslCompiledTransform()
'write the stringified xslt code to file, in order to check its validity manually'
File.WriteAllText("C:\Users\gk\Desktop\tempXSLTcode.xsl", xsltTransformerCode.transformationXSLTcode())
'load the xml string taken from the database'
myXmlDoc.Load("C:\Users\gk\Desktop\XTilbud.xml")
'load the stylesheet'
xsltTransCompiled.Load(xr)
Using xw As XmlWriter = resultXmlDoc.CreateNavigator().AppendChild()
xsltTransCompiled.Transform(myXmlDoc, Nothing, xw)
xw.Close()
End Using
resultXmlDoc.Save("C:\Users\gk\Desktop\myXMLfile.xml")
sr.Dispose()
sr.Close()
xr.Close()
另外,我想转换原始文档并将其值传递给另一个xmlDocument并保存它。(或者,如果我可以变换并保存同一个对象,那就没关系了。我愿意听取建议)
因此,我需要的是以某种方式获取读取器的值,并将其保存为XML文档或类似的smth,我不确定…对于这种情况,您的代码有点过于复杂
试试。如果希望转换结果为C:\Users\gk\Desktop\myXMLfile.xml
,为什么要首先尝试创建XmlDocument
,为什么不简单地使用Transform
方法的重载,该方法采用FileStream
或XmlWriter
(例如,使用xw作为XmlWriter=XmlWriter.Create(“C:\Users\gk\Desktop\myXMLfile.xml”,xsltTransCompiled.OutputSettings)xsltTransCompiled.Transform(myXmlDoc,Nothing,xw)结束使用
)?我最初的目的是将应用的XSLT转换的结果保存到xml文档(对象)中我现在用.Save()做的事情
只是出于测试目的,检查转换是否成功。顺便说一句,我尝试了你的方法,现在我新创建的XML是空的……我们需要查看样式表代码和输入XML示例。我认为问题不在于XML和XSLT,而在于resultXmlDoc
这就是我得到的无效XML文档的原因。该文档没有根元素,因为它实际上是空的。