我对 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");