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 コントロールのデータを使用してそれらの 1 つを作成する方法がわかりません。入力ファイルの代わりにフォーム データを使用して XML を変換する例を誰かが提供してくれれば、非常に役に立ちます。

4

3 に答える 3

0

XslTransformは .NET 2.0 以降では廃止されていることに注意してくださいXslCompiledTransform。代わりに使用する必要があります。使用したい場合は、それらをのメソッド (例: http://msdn.microsoft.com/en-us/library/ms163425.aspxXslSettings )に渡すようにしてください。単純に作成するだけでは意味がありません。XslCompiledTransformLoad

Text文字列変数またはプロパティ ( a のプロパティなど)にある XML の解析に関しては、多くのオプションがTextBoxあります。XmlReaderStringReader

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);
  }
}

または、文字列からXPathDocumentorを作成し、最初の引数としてan を取るメソッドのオーバーロードを使用できます。XmlDocumentXDocumentTransformIXPathNavigable

于 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 データを含む 3 つの文字列があると想定しています。

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 フォームで動作させるには、フォーム要素 (コントロール) の値 (テキスト) から文字列を取得し、TextBox コントロールを使用できる入力 XMl および Xslt に対して、結果を表示するだけです。ラベルを使用できますが、すべて非常に便利です。より良い答えがあれば、お気軽にお知らせください。

于 2012-12-27T19:21:29.813 に答える