网上有很多使用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的示例,那将非常有用。
答案 0 :(得分: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; }
}
}
答案 1 :(得分:0)
请注意,XslTransform
自.NET 2.0以来已经过时,您应该使用XslCompiledTransform
。如果您想使用XslSettings
,请确保将其传递到XslCompiledTransform
的{{1}}方法(例如http://msdn.microsoft.com/en-us/library/ms163425.aspx),只是创建它没有意义。
至于解析XML,你有一个字符串变量或属性(如Load
的{{1}}属性)你有很多选项,你可以使用Text
而不是{ {1}}例如
TextBox
或者您可以从字符串中创建XmlReader
或StringReader
或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);
}
}
,并使用XPathDocument
方法的重载,该方法需要XmlDocument
作为第一个论点。
答案 2 :(得分:-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表单,您所要做的就是从表单元素(控件)的值(Text)获取字符串,输入XMl和Xslt可以使用TextBox控件,以及显示你可以使用标签的结果,非常有用,如果有人有更好的答案,请随时告诉我。