我要编辑的只是余额。不多。真的就是这些。
我的xml文件:
<?xml version=“1.0” encoding=“utf-8”?>
<Data>
<Place>
<Date Month="February">
<Counter>2</Counter>
<Player>1</Player>
<Player>2</Player>
<Game Name="Football">
<IdNumber>1</IdNumber>
<salutation>Mr</salutation>
<prename>Prename1</prename>
<surname>Surname1</surname>
<maximumbalance>100</maximumbalance>
<balance>100</balance>
</Game>
<Game Name="Tennis">
<IdNumber>2</IdNumber>
<salutation>Mr</salutation>
<prename>Prename2</prename>
<surname>Surname2</surname>
<maximumbalance>100</maximumbalance>
<balance>100</balance>
</Game>
</Date>
</Place>
</Data>
我的解决方案在这里:
private void edit_Click(object sender, RoutedEventArgs e)
{
XmlDocument xdoc = new XmlDocument();
xdoc.Load(Path);
XmlNode node = xdoc["Data"]["Place"]["Date"]["Game"]
int countvalues = 100;
for (int i = 0; i < countvalues; i++)
foreach (XmlNode childNode in node.ChildNodes)
{
if (childNode.Attributes["Name"].InnerText.Equals("Tennis"))
{
childNode["balance"].InnerText = xBal.Text;
}
}
xdoc.Save(Path);
}
我的xml文件中还有很多条目(Tennis1,Tennis2等),这现在不是问题,
这一行:childNode.Attributes [“ Name”]。InnerText.Equals(“ Tennis”))为空,不知道为什么
...我正在使用Visual Studio 2015和WPF
致谢 马丁
答案 0 :(得分:1)
您的代码与Xml文档的结构不完全匹配。您忽略了Player元素。尝试XmlNode node = xdoc [“ Data”] [“ Place”] [“ Date”] [“ Player”] [“ Game”]
答案 1 :(得分:0)
请尝试使用此示例。 我认为它将正常运行。
string xBal = "200";
string path = "D:\\xml.xml";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(path);
XmlNodeList NodeList = xmlDoc.GetElementsByTagName("Game");
foreach (XmlNode item in NodeList)
{
if (item.Attributes[0].InnerText.Equals("Tennis"))
{
XmlNode balance = item.SelectSingleNode("balance");
balance.InnerText = xBal;
}
}
xmlDoc.Save(path);
答案 2 :(得分:0)
这应该为您工作。您的主节点已经包含Game元素-这就是为什么您将无法在ChildNode中找到它的原因。我更正了您的主要路径,不包括“游戏”节点。现在,您可以在ChildNodes集合中找到它。我为Node.Name和Attribute名称添加了一些检查,以确保它是Game节点。它应该为您工作。
Settings