Позвольте мне объяснить это снова.
Например, если у нас есть таблица БД, мы запрашиваем некоторые столбцы и суммируем все значения в этих столбцах, чтобы создать уникальный ключ, сохранить его в новом столбце и обновить этот другой новый столбец с номером. Снова выполните цикл, и если снова комбинация значений других столбцов дублируется с предыдущим, тогда обновите 2-й столбец с тем же значением, что и предыдущий номер, в противном случае следующий порядковый номер. Я должен сделать это в файле xml.
e-g.
Combinatin of
values from
different nodes Value
--------------- --------
A-B-C-D-E 1
A-B-C-D-F 2
A-B-C-D-G 3
A-B-C-D-E 1
namespace XMLdemo2
{
class Program
{
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
// will use this dictionary object to store and compare node values
Dictionary<String, String> Rxml = new Dictionary<string, string>();
String rdsName = "";
String rdrValue = "";
using (XmlReader reader = mlReader.Create(@"C:\Development\XML\Batch1823.xml"))
{
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
reader.ReadToFollowing("Machine");
reader.MoveToAttribute("machineId");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.ReadToFollowing("Rod");
reader.MoveToAttribute("finalReference");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.MoveToAttribute("color");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.MoveToAttribute("length");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.ReadToFollowing("Piece");
reader.MoveToAttribute("angle");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.MoveToAttribute("angleA");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.MoveToAttribute("angleB");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.ReadToFollowing("Operations");
if (reader.ReadToDescendant("Operation"))
{
do
{
reader.MoveToAttribute("name");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
reader.MoveToAttribute("X");
rdsName = reader.Name;
rdrValue = reader.Value;
sb.Append(rdsName).Append("=").Append(rdrValue);
} while (reader.ReadToNextSibling("Operation"));
}
break;
default:
break;
}
}
}
Console.ReadKey();
}
}
}
Эта программа считывает все значения, но как записать их одновременно в один и тот же файл xml на основе этих значений. Я предполагаю, что нужно сохранить эту комбинацию значений узла в объекте Dictionary в качестве ключа и сравнить с ним значение Stringbuilder sb. если он найден в словаре, то не создавайте новый элемент в словаре, а получайте значение словаря и обновляйте его в xml, но как? пожалуйста помоги.
Спасибо
QF