試試我的解決方案,
string xml = @"<categories>
<category>
<id>1</id>
<name>Computer</name>
<description>Information tech.</description>
<active>False</active>
</category>
<category>
<id>2</id>
<name>Cate1</name>
<description>MMukh</description>
<active>True</active>
</category>
</categories>";
XDocument xDoc = XDocument.Parse(xml);
int id = 1;
var items = xDoc.XPathSelectElement("//category[id=" + id + "]")
.Elements()
.ToDictionary(e => e.Name.LocalName, e => (string)e);
if (items != null)
{
// display these fields to the text box
Console.WriteLine(items["name"]);
Console.WriteLine(items["description"]);
Console.WriteLine(items["active"]);
}
你可以使用上面的代碼在文本框中顯示的數據。和下面的代碼更新現有的XML與更新的數據。
// updated value for xml element - description
string description = "Computer 123";
var items1 = from item in xDoc.Descendants("category")
where item.Element("id").Value == id.ToString()
select item;
foreach (XElement itemElement in items1)
{
itemElement.SetElementValue("name", description);
}
xDoc.Save("data.xml");
您可以在xDoc
中獲得更新的xml數據。
難道你不喜歡你以前的問題中的任何答案http://stackoverflow.com/questions/16398193/how-can-i-get-single-node-data-using-linq/16398475#16398475?你有嘗試過嗎?在更新xml節點時遇到什麼問題? – I4V 2013-05-06 12:32:05
你試圖顯示和保存的代碼在哪裏? – Sujit 2013-05-06 12:44:39