8

警告を排除するために、いくつかのレガシーコードを変更しています。 XmlDataDocumentどちらも、XslTransform廃止されたという警告を生成します。XslTransform提案された置換の場合はですXslCompiledTransformが、の置換は提案されていませんXmlDataDocument

このコードを変更して、.NET4の警告を削除するにはどうすればよいですか。

var xmlDoc = new System.Xml.XmlDataDocument(myDataSet);
var xslTran = new System.Xml.Xsl.XslTransform();
xslTran.Load(new XmlTextReader(myMemoryStream), null, null);
var sw = new System.IO.StringWriter();
xslTran.Transform(xmlDoc, null, sw, null);
4

2 に答える 2

8
XDocument doc = new XDocument();
using (XmlWriter xw = doc.CreateWriter())
{
  myDataSet.WriteXml(xw);
  xw.Close();
}

XslCompiledTransform proc = new XslCompiledTransform();
using (XmlReader xr = XmlReader.Create(myMemoryStream))
{
  proc.Load(xr);
}

string result;

using (StringWriter sw = new StringWriter())
{
  proc.Transform(doc.CreateNavigator(), null, sw);  // needs using System.Xml.XPath;
  result = sw.ToString();
}

やるべきだと思います。もちろん、私はスタイルシートをロードするためにそのMemoryStreamを使用し、コードスニペットがそれらを使用したときに変換結果を送信するためにStringWriterを使用しただけです。通常、ファイル、ストリーム、Textreaderなどの他の入力ソースまたは出力先があります。

于 2012-08-30T16:49:49.757 に答える
2

XMLDocumentは本当にあなたの主なオプションです。投稿したコードブロックで何をしようとしているのか100%わかりませんが、次のようなものを試してみてください。

public void DoThingsWithXml() 
{
  string strXdoc = src.GetTheXmlString(); // however it is you do it
  XmlDocument xdoc = new XmlDocument();
  xdoc.LoadXml(strXdoc);
  // The other things you need to do
}
于 2012-08-30T16:49:24.667 に答える