C# Внесение изменений в xml файл из txt файла

244
10 июля 2018, 08:10

Есть два файла: Файл txt(файл источник), в котором 4 колонки и несколько строк

Другой файл(файл в котором нужно сделать апдейт строк), формата xml. Вот часть кода xml файла который нужно заменить данными из текстовика.

Суть что бы заменить:
ConnectionManagaerID = "2й столбец txt"
ConnectionManagaerID = "1й столбец txt"

не могу реализовать это обновление.
Пробовал с помощью массива, создание DataTable.

Answer 1

Имеем такой текстовой файл с таким содержимым

Package.ConnectionManagers[xxx]|{XXX-XXXX-XXXX-XXXX-XXXX}|Data Source=YYY; User ID=fjfjf;|ACS Available Moths.dts

Имеем такой файл XML

<?xml version="1.0" encoding="utf-8"?>
<connections>
  <connection refId="PackageId..." connectionManagerID="conManagerId..." connectionManagerRefId="conManRefId..." description="des..." name="OleDbConnection..." />
</connections>

После имеем такой файл

<?xml version="1.0" encoding="utf-8"?>
<connections>
   <connection refId="PackageId..." connectionManagerID="{XXX-XXXX-XXXX-XXXX-XXXX}" connectionManagerRefId="Package.ConnectionManagers[xxx]" description="des..." name="OleDbConnection..." />
</connections>

Вот код программы целиком, можете экспериментировать

class Program
{
    static void Main(string[] args)
    {
        string xmlFile = @"D:\cons.xml";
        string txtFile = @"D:\cons.txt";
        //MakeXML(xmlFile);
        ChangeConnectionAttributes(xmlFile, txtFile);
    }
    private static void MakeXML(string xmlFile)
    {
        XDocument doc = new XDocument();
        XElement elm = new XElement("connections",
                            new XElement("connection", 
                                new XAttribute("refId", "PackageId..."),
                                new XAttribute("connectionManagerID", "conManagerId..."),
                                new XAttribute("connectionManagerRefId", "conManRefId..."),
                                new XAttribute("description", "des..."),
                                new XAttribute("name", "OleDbConnection...")));
        doc.Add(elm);
        doc.Save(xmlFile);
    }
    private static void ChangeConnectionAttributes(string xmlFile, string txtFile)
    {
        var strs = File
                      .ReadAllText(txtFile)
                      .Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
        XDocument doc = XDocument.Load(xmlFile);
        var c1 = doc.Descendants("connection")
                    .First()
                    .Attributes()
                    .First(a => a.Name == "connectionManagerID").Value = strs[1];
        var c2 = doc.Descendants("connection")
                    .First()
                    .Attributes()
                    .First(a => a.Name == "connectionManagerRefId").Value = strs[0];
        doc.Save(xmlFile);
    }
}
READ ALSO
Убрать кнопку расширения в Toolbar

Убрать кнопку расширения в Toolbar

Можно ли убрать эту кнопку в ToolBar если они не требуется в данной ситуации?

258
System.InvalidOperationException при получении пикселя

System.InvalidOperationException при получении пикселя

Код выполняется в отдельном потоке, вычисляет средний цвет изображения и рисует его на Control'еПри получении цвета пикселя _bmp

232
StackFrame, нет имени файла и номера строки

StackFrame, нет имени файла и номера строки

Использую debug - сборку приложения, и хотел бы получить имя строки вызова и имя файлаОднако, в случае имени файла, в текущем кадре хранится значение...

375
Как сделать высокочастотный фильтр? - C#

Как сделать высокочастотный фильтр? - C#

Если при создание низкочастотного я использовал класс ComplexImage Мне нужно сделать что бы изображение получалось как на фильтре, только на оборот...

257