次の実装についてご意見をいただければ幸いです。目標は次のとおりです。XElement を生成し、ファイル システムの読み取り/書き込みを可能な限り回避します。
private XElement ProduceApiXml(KeyValuePair<string, ConfigScriptOutput> kvp)
{
XElement returnValue = null;
// load xsl file
XslCompiledTransform ct = new XslCompiledTransform();
string xslFile = Path.Combine(_assemblyDir, ConfigurationManager.AppSettings["ConfigOutputXslFile"]);
ct.Load(xslFile);
XmlReader xmlToTransform = XmlReader.Create(new StringReader(kvp.Value.ScriptStdOut));
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
XmlWriter xmlTransformed = new XmlTextWriter(sw);
ct.Transform(xmlToTransform, xmlTransformed);
returnValue = XElement.Parse(sb.ToString());
return returnValue;
}
この XslCompiledTransform クラスを使用するのはこれが初めてで、改善できると考えています。私の本当の懸念は、目的の場所に到達するために StringBuilder -> StringWriter -> XmlWriter コンストラクト以外のものを使用する必要があるかということです。目の前のタスクを実行するために構築された多くのオブジェクトのように見えます-これは機能します。今は働くことが勝ちですが、もっと良くしたいです。
私がここで行ったことについて建設的なコメントをしてくださった経験のある方々に本当に感謝しています。コードレビューですか?
お時間をいただきありがとうございます。