什么是无弃用替代的XmlDataDocument和的XslTransform?(What's

2019-07-31 07:13发布

我修改了一些旧代码,试图消除警告。 XmlDataDocumentXslTransform都产生,他们是过时的警告。 在该情况下XslTransform建议更换XslCompiledTransform ,但没有更换建议XmlDataDocument

我怎样才能改变这种代码,以消除在.NET 4的警告:

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

Answer 1:

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的。



Answer 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
}


文章来源: What's the non-deprecated alternative to XmlDataDocument and XslTransform?
标签: c# xslt .net-4.0