私はLINQに非常に慣れていないので、ご容赦ください:)
現在、XML 形式の SSIS パッケージ (.dtsx) を XML ベースの .BIML ファイルにリバース エンジニアリングしようとしています。ただし、同じオブジェクトに対して異なる構造を持っています。
だから私がやろうとしているのは、.dtsxパッケージのXMLをループして、基本的に要素のタイプをチェックし、新しいファイルに同等の要素を作成することですが、名前/属性が異なりますが、必要になります新しいファイルに要素を作成するときに、オブジェクトの階層関係を維持します。
しかし、ソースファイルをループしているときに、新しいファイルに新しい要素を追加する方法に本当に苦労しています。
誰かがいくつかの指針を提供できますか?
現時点ではファイルをループできます (正しくループしているかどうかを確認するために、コンソール ウィンドウに出力しているだけです) が、要素を新しいファイルに追加するのに苦労しています。
どんな助けでも大歓迎です
string file = @"F:\\sample.dtsx"
XDocument xDoc = XDocument.Load(file);
XNamespace env = "www.microsoft.com/SqlServer/Dts";
IEnumerable<XElement> elements = xDoc.Root.Descendants(); //
XDocument BIMLXdoc = new XDocument(
new XDeclaration("1.0", "utf-8", null),
new XElement("Root"));
//BIMLXdoc.Add(new XElement("test")); ####This doesn't work
foreach (XElement element in elements)
{
// Test element and if of the correct type add new elemnt to biml file
IEnumerable<XAttribute> attribs = element.Attributes();
foreach (XAttribute attrib in attribs)
{
Console.WriteLine(element.Name.LocalName + " - Attribute(" + attrib.Name.LocalName + ") - Value:(" + attrib.Value + ")");
}
}
BIMLXdoc.Save("F:\\BIMLTest.xml");