C# 在C中修改单个XML属性#

C# 在C中修改单个XML属性#,c#,xml,string,replace,C#,Xml,String,Replace,我已经很好地编写了XML文档,它看起来像这样 <Team> <Character Name="Bob" Class="Mage"/> <Character Name="Mike" Class="Knight"/> </Team> 我试图找到一种方法来访问单个字符的“Class”属性并对其进行修改。到目前为止,我已经能够精确定位一个特定的字符了,但是我不知道如何访问“Class”属性并为字符修改它 void Write(string p

我已经很好地编写了XML文档,它看起来像这样

<Team>
  <Character Name="Bob" Class="Mage"/>
  <Character Name="Mike" Class="Knight"/>
</Team>

我试图找到一种方法来访问单个字符的“Class”属性并对其进行修改。到目前为止,我已经能够精确定位一个特定的字符了,但是我不知道如何访问“Class”属性并为字符修改它

void Write(string path, string charName, string varToChange, string value){

    XmlNode curNode = null;
    XmlDocument doc = new XmlDocument();
    doc.Load(path);

    XmlElement rootDoc = doc.DocumentElement;
    curNode = rootDoc;

    if(curNode.HasChildNodes){

        for(int i=0; i<curNode.ChildNodes.Count; i++){

            if(charName == curNode.ChildNodes[i].Attributes.GetNamedItem("Name").Value){

                // Code would go here
            }
        }
    }
    return;
}
void Write(字符串路径、字符串字符名、字符串变量更改、字符串值){
XmlNode curNode=null;
XmlDocument doc=新的XmlDocument();
单据加载(路径);
xmlementrootdoc=doc.DocumentElement;
curNode=rootDoc;
if(curNode.HasChildNodes){

对于(inti=0;i使用xmlement.SetAttribute('attribute to modify','value to set to to to set to')方法

编辑: 我刚刚注意到您使用的是XMLNode而不是XMLElement,因此为了更新属性,您可以将XMLNode强制转换为如下所示的XMLElement

XmlElement el = (XmlElement)curNode;
el.SetAttribute("Class", "Value");
否则,您可以创建一个属性,然后附加该属性以更新该属性:

XmlAttribute attrib =
curNode.OwnerDocument.CreateAttribute("Class");
attrib.Value = "Value";
curNode.Attributes.Append(attrib);
希望这有助于使用XPATH:

XmlDocument doc = new XmlDocument();
doc.Load(path);

var nodes = doc.SelectNodes(String.Format("/Team/Character[@Name=\"{0}\"]", charName));

foreach (XmlElement n in nodes)
{
    n.SetAttribute(varToChange, value);
}

一旦您了解了XPath,XML的使用就会变得容易10倍。使用
XDocument
会有什么好处?