2010-07-10 75 views
3

我知道了编写XML文档罚款单XML属性,它会是这个样子修改C#

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

我试图找到一种方法来访问“类”的属性一个字符并修改它。到目前为止,我已经找到了指明特定字符的点,但我无法弄清楚如何访问'Class'属性并对char进行修改。

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; 
} 

回答

3

使用XmlElement.SetAttribute(“属性修改”,“值设置为”)方法

编辑: 我你使用的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); 

希望这有助于

3

使用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); 
} 
+1

XML获得约10倍更容易,一旦你了解XPath的工作。 – 2010-07-11 01:14:01

+0

'XDocument'会怎样? – 2015-01-22 20:19:51