Существуют и другие подобные вопросы, на которые были заданы и даны ответы, но ни один из этих ответов не работает в том, что я пытаюсь сделать, или мне не хватает информации, чтобы понять, как реализовать это в своем собственном коде.Я занимался этим два дня и теперь должен обратиться за помощью.
У меня есть задача сценария в пакете служб SSIS, где мне нужно выполнить сопоставление и заменить большой XML-файл, содержащий тысячи записей.Идентификационные метки.Каждый содержит номер.Мне нужно, чтобы эти числа были последовательными и увеличивались на единицу.Например, в файле XML я могу найти теги, которые выглядят так:
<ns1:recordIdentifier>1</ns1:recordIdentifier>
<ns1:recordIdentifier>6</ns1:recordIdentifier>
<ns1:recordIdentifier>223</ns1:recordIdentifier>
<ns1:recordIdentifier>4102</ns1:recordIdentifier>
Мне нужно найти и заменить эти теги последовательными приращениями, например, так:
<ns1:recordIdentifier>1</ns1:recordIdentifier>
<ns1:recordIdentifier>2</ns1:recordIdentifier>
<ns1:recordIdentifier>3</ns1:recordIdentifier>
<ns1:recordIdentifier>4</ns1:recordIdentifier>
Код, который у меня есть, приводит к тому, что все числа равны «1» без увеличения.
Я пробовал десятки различных методов, но пока ничего не помогло.
Любые идеиотносительно того, как я могу изменить приведенный ниже код для увеличения по желанию?
public void Main()
{
string varStart = "<ns1:recordIdentifier>";
string varEnd = "</ns1:recordIdentifier>";
int i = 1;
string path = Dts.Variables["User::xmlFilename"].Value.ToString();
string outPath = Dts.Variables["User::xmlOutputFile"].Value.ToString();
string ptrn = @"<ns1:recordIdentifier>\d{1,4}<\/ns1:recordIdentifier>";
string replace = varStart + i + varEnd;
using (StreamReader sr = File.OpenText(path))
{
string s = "";
while ((s = sr.ReadLine()) != null && i>0)
{
File.WriteAllText(outPath, Regex.Replace(File.ReadAllText(path),
ptrn, replace));
i++;
}
}
}