2012-07-26 79 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