【问题标题】:Adding attribute to existing XMLNodes向现有 XMLNode 添加属性
【发布时间】:2012-11-30 01:14:39
【问题描述】:

您好,我正在尝试为现有 xml 文件中的多个标签添加属性。这是 xml 结构:

<Planet>
  <Continent ContinentName="Africa">
    <Country CountryName="Algeria" />
    <Country CountryName="Angola" />
     ...
  </Continent>
  <Continent ContinentName="Europe">
    <Country CountryName="France" />
    <Country CountryName="England" />
    ...
  </Continent>
  ...
</Planet>

我正在尝试为每个国家/地区标签添加一个 Id 属性。这是我的代码:

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 次。如果是这样,为什么我在结束时只添加了一个属性?

【问题讨论】:

    标签: c# xml xml-parsing


    【解决方案1】:

    您应该将XmlAttribute xKey = xDoc.CreateAttribute("Id"); 放在循环中

    【讨论】:

      猜你喜欢
      • 2018-10-23
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-01
      • 2019-02-15
      相关资源
      最近更新 更多