我正在修改一些遗留代码以尝试消除警告。 XmlDataDocument
和XslTransform
都会生成过时的警告。在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);
答案 0 :(得分: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。
答案 1 :(得分:3)
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
}