C# 在C中修改单个XML属性#
我已经很好地编写了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
<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
会有什么好处?