1
让我再解释一遍。找到唯一的元素值并用组号码创建/标记节点
例如,如果我们有一个数据库表,我们查询了一些列增加了这些列的所有值,使一个唯一的密钥,并保存新的列和更新另一个新的列了一些。再次循环,如果其他列值的组合与前一个值相同,则使用与前一个数字相同的值更新第二列,否则更新下一个序列号。我必须在xml文件中完成它。 e-g。
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