我正在尝试编辑.xml文件中的节点,但我无法使其正常工作。
我的XML:
<configuration>
<car title="Ferrari">
<url>http://www.ferrari.com</url>
</car>
</configuration>
我在c#中的代码:
string var_x = "Ferrari";
XmlDocument doc = new XmlDocument();
doc.Load("Config.xml");
XmlNode itemTitle = doc.SelectSingleNode("/configuration/car[@title = '" + var_x + "']");
XmlNode itemUrl = doc.SelectSingleNode("/configuration/car[@title = '" + var_x + "']/url");
itemTitle.InnerText = texbox_title.Text;
itemUrl.InnerText = textbox_url.Text;
doc.Save("Config.xml");
我无法获取上面的代码来处理我的xml。我无法编辑该节点。也许是XPath的问题,但我无法弄清楚为什么它不能正常工作。
使用上面的c#代码后的我的XML:
<configuration>
<car title="Ferrari">NEW_NAME</car>
</configuration>
答案 0 :(得分:0)
如果要更改car元素的属性标题的值,请按如下所示更改代码:
XmlElement itemTitle = (XmlElement)doc.SelectSingleNode("/configuration/car[@title = '" + var_x + "']");
XmlNode itemUrl = doc.SelectSingleNode("/configuration/car[@title = '" + var_x + "']/url");
itemTitle.Attributes["title"].Value = texbox_title.Text;
itemUrl.InnerText = textbox_url.Text;
在您的版本中,汽车元素的完整内部文本(包括url子元素)将被汽车标题覆盖。
此外,您需要将SelectSingleNode的结果转换为XmlElement,因为它具有Attributes集合。
答案 1 :(得分:0)
属性InnerText
指的是文本的所有内容,因此您要替换car元素的内容,包括带有行的url元素:
itemTitle.InnerText = texbox_title.Text;
请改用以下内容:
itemTitle.Attributes["title"].Value = texbox_title.Text;
itemUrl.InnerText = textbox_url.Text;