XML节点添加属性问题

利用下面的程序对xml文件中具有相同节点名的节点添加属性,这个示例中有两个title节点

XmlDocument doc1 = new XmlDocument();
doc1.LoadXml("<book ISBN='xxxx'>" +
           "<title>A</title>" +
           "<title>B</title>" +
           "</book>");
            
XmlAttribute newAttr = doc1.CreateAttribute("attr");
newAttr.Value = "value";

var titleNodes = doc1.GetElementsByTagName("title");            
 foreach (XmlNode title in titleNodes)
 {
         title.Attributes.Append(newAttr);
         //title.Attributes.SetNamedItem(newAttr); ---- 此方法可以,只不过新属性成为了第一个位置
 }

原xml文件

<?xml version="1.0"?>
<book ISBN="xxxx">
  <title>A</title>
  <title>B</title>
</book>

在给第一个title节点添加完属性后是这样的

<?xml version="1.0"?>
<book ISBN="xxxx">
  <title attr="value">A</title>
  <title>B</title>
</book>

接着给第二个title节点添加相同的一个属性,结果变成这样

<?xml version="1.0"?>
<book ISBN="xxxx">
  <title>A</title>
  <title attr="value">B</title>
</book>

第一个节点的属性没有添加成功,只给第二个节点添加了属性。

用程序中的title.Attributes.SetNamedItem(newAttr);倒是可以给所有节点添加属性,只是属性变为第一个位置

想问一下,.Attributes.Append(newAttr)方法为什么会出现上述现象

是每次操作完没有保存导致的吧