2012-07-26 65 views
0

示例XML文件如何通過屬性值更改linq中的XML文檔的值?

<SiEventSchedule deleteStart="2012/01/21 00:00:00" deleteEnd="2012/01/21 23:59:59"> 
</SiEventSchedule> 

代碼:

var el = doc.Descendants(ns + "SiEventSchedule").Select(x => x.Attribute("deleteStart").Value).First(); 
string[] s = el.ToString().Split(' '); 
s[0] = today.ToString("yyyy/MM/dd"); 
String s5 = String.Join(" ", s); 
el.Replace(el, s5); // This line is not working 

只有代碼的最後一行是不工作,一切工作正常。 任何人都可以請建議如何更新此值?

<SiEventSchedule deleteStart="2012/01/21 00:00:00" deleteEnd="2012/01/21 23:59:59"> 
</SiEventSchedule> 
+0

el.Value應該訣竅!? – 2012-07-26 08:08:23

+0

@ Steen不,它不適用於el.Value – Saman 2012-07-26 08:10:37

+0

刪除select中的.Value,你不想選擇字符串/值,你想選擇屬性。看看我的答案。 – 2012-07-26 08:12:14

回答

0

不能確定它是什麼你試圖與選擇的事,但如果你想改變屬性的值,這是多麼:

 XAttribute attr = doc.Descendants(ns + "SiEventSchedule").Select(x => x.Attribute("deleteStart")).First(); 
     attr.SetValue(attr.Value.Replace(oldValue, newValue)); 
+0

@Steen ....仍然沒有取代.. :( – Saman 2012-07-26 08:18:23

+0

對不起,有點太快了,現在呢。 – 2012-07-26 08:29:54

+0

非常感謝Steen ...現在它工作.. – Saman 2012-07-26 08:45:24

0

那?

using System.Xml.Linq; 

XDocument xmlFile = XDocument.Load("books.xml"); 

var query = from c in xmlFile.Elements("catalog").Elements("book")  
      select c; 

foreach (XElement book in query) 
{ 
    book.Attribute("attr1").Value = "MyNewValue"; 
} 

xmlFile.Save("books.xml"); 

我希望這會幫助

+0

這是一個基本的幫助樣本 – 2012-07-26 08:11:45