0

网上有很多使用 XSLT 文件将 XML 文件转换为不同格式的示例,如下所示:

XslTransform myXslTransform = new XslTransform();
XsltSettings myXsltSettings = new XsltSettings();
myXsltSettings.EnableDocumentFunction = true;
myXslTransform.Load("transform.xsl");
myXslTransform.Transform("input.xml", "output.xml");

但是,这只是部分答案,我希望能够从 Web 表单中获取 XML 输入数据并将其用作输入 xml 数据而不是“.xml”文件,但还没有找到任何具体示例。使用 Visual Studio,我看到了接受 XmlReader 对象作为参数的 Load 方法,但我不知道如何使用表单和 TextBox 控件中的数据创建其中一个。如果有人可以提供一个使用表单数据而不是输入文件转换 XML 的示例,那将非常有帮助。

4

3 回答 3

0

请注意,XslTransform自 .NET 2.0 以来已过时,您应该XslCompiledTransform改用它。如果您想使用,请XslSettings确保将它们传递给XslCompiledTransform'Load方法(例如http://msdn.microsoft.com/en-us/library/ms163425.aspx),简单地创建它是没有意义的。

至于解析XML,你有一个字符串变量或属性(如Texta 的属性TextBox)你有很多选项,你可以使用 a XmlReaderover aStringReader例如

XslCompiledTransform proc = new XslCompiledTransform();
proc.Load("sheet.xsl");

using (StringReader sr = new StringReader(TextBox1.Text))
{
  using (XmlReader xr = XmlReader.Create(sr))
  {
    proc.Transform(xr, null, Response.Output);
  }
}

或者,您可以从字符串创建一个XPathDocumentXmlDocument或,并使用将 an作为第一个参数的方法的重载。XDocumentTransformIXPathNavigable

于 2012-12-27T18:55:46.077 回答
0

创建一个类并在从表单数据回发期间填充此类的一个实例并将其序列化(将其转换为 xml)

这是您的控制台示例

using System;
using System.Collections.Generic;

using System.Text;

using System.Xml.Serialization;

namespace Stackoverflow
{

    public class Program
    {

        static void Main(string[] args)
        {

          var p = new Person
            {
                FirstName = "Daniel",  /// in your case you get it from the form
                LastName = "Endeg"

            };

            var x = new XmlSerializer(p.GetType());
            x.Serialize(Console.Out, p);
            Console.WriteLine();
            Console.ReadLine();
        }
    }

    public class Person
    {
        public string FirstName { get; set; }

        public string LastName { get; set; }
    }
}
于 2012-12-27T18:48:45.863 回答
-1

好的,在 Visual Studio 自动完成功能的帮助下,它列出了构造函数和方法的参数,我能够在 Xslt 转换操作中使用字符串作为输入和输出来完成上述问题的工作答案。耶。下面的示例答案假设您有三个包含 Xslt 文本数据和输入 Xml 文本数据和输出 Xml 数据的字符串:

string XsltText;
string InputXML;
string OutputXml;

// define the xslt from a string
TextReader myXsltText = new StringReader(XsltText);
XmlReader myXslt = new XmlTextReader(myXsltText);

// define the input xml from a string
TextReader myXmlText = new StringReader(InputXML);
XmlReader myInputXml = new XmlTextReader(myXmlText);

// define the output XmlWriter for the results of the transform
TextWriter myOutputXmlTextWriter = new StringWriter();
XmlWriter myOutputXml = new XmlTextWriter(myOutputXmlTextWriter);

XslCompiledTransform myXslTransform = new XslCompiledTransform();
XsltSettings myXsltSettings = new XsltSettings();
myXsltSettings.EnableDocumentFunction = true;
myXslTransform.Load(myXslt);
myXslTransform.Transform(myInputXml, myOutputXml);

// the result from the transform comes from the TextWriter object
OutputXml = myOutputXmlTextWriter.ToString();

// clean up writers
myOutputXml.Flush();
myOutputXmlTextWriter.Close();
myOutputXml.Close();

要使此代码与 Web 表单一起使用,您所要做的就是从表单元素(控件)的值(文本)中获取字符串,对于输入 XMl 和 Xslt,您可以使用 TextBox 控件,并显示结果您可以使用标签,所有这些都非常有用,如果有人有更好的答案,请随时告诉我。

于 2012-12-27T19:21:29.813 回答