您好我正在尝试在现有的xml文件中添加一个attribut到几个标签。这是xml结构:
<Planet>
<Continent ContinentName="Africa">
<Country CountryName="Algeria" />
<Country CountryName="Angola" />
...
</Continent>
<Continent ContinentName="Europe">
<Country CountryName="France" />
<Country CountryName="England" />
...
</Continent>
...
</Planet>
我正在尝试为每个国家/地区代码添加ID attribut。这是我的代码:
public static List<Cities> cities = new List<Cities>();
XmlDocument xDoc = new XmlDocument();
xDoc.Load(@"D:\Projects IDE\Visual Studio\Tutorial\e-commerce\classModeling\GenerateXml file\GenerateXml file\bin\Debug\Planet.xml");
XmlAttribute xKey = xDoc.CreateAttribute("Id");
XmlElement root = xDoc.DocumentElement;
XmlNodeList nodes = root.SelectNodes("//Country");
int count = 0;
foreach( XmlNode node in nodes ) {
string name = node.Attributes["CountryName"].Value;
foreach (var cityObj in cities)
{
xKey.Value = cityObj.cityInitial;
if(name == cityObj.cityName)
{
count++;
node.Attributes.Append(xKey);
Console.WriteLine(count);
}
}
}
xDoc.Save(@"D:\Projects IDE\Visual Studio\Tutorial\e-commerce\classModeling\GenerateXml file\GenerateXml file\bin\Debug\Planets.xml");
问题是此代码仅将id添加到XML文件中的最后一个元素。 现在起初我认为那是因为只有一个条件是真的,但后来我添加了一个计数器,结果证明这个条件是真实的179次。如果是这样的话,为什么我在结束时只添加了一个attributt?
答案 0 :(得分:7)
您应该将XmlAttribute xKey = xDoc.CreateAttribute("Id");
放在循环