2009-08-14 102 views
0

我有一些XML:LINQ更新一个XDocument

<Response TaskId="2429"> 
    <message>Run for cover.</message> 
    <element location="proj\survival.cs"/> 
    <element location="proj\run.cs"/> 
</Response> 

我想属性添加到每个项目:

<element location="proj\run.cs" status="running"/> 

这有可能与LINQ在C#中? 谢谢任何​​提示...

回答

0

当然。请参阅以下链接:http://www.hookedonlinq.com/LINQtoXML5MinuteOverview.ashx

XElement xml = new XElement("Response", 
          new XAttribute("TaskId", "2429"), 
          new XElement("message", "Run for cover"), 
          new XElement("element", 
           new XAttribute("location", "proj\survival.cs"), 
           new XAttribute("status", "running")), 
          new XElement("element", 
           new XAttribute("location", "proj\run.cs"), 
           new XAttribute("status", "running"))); 

你可以在上面看到,它建立了与嵌套调用的XML结构。你所需要做的就是将'新属性'调用作为LINQ结构的一部分来生成一个新属性。

UPDATE:如果你想属性添加到查询的结果,请执行下列操作:

var query = from node in xml.Descendants("element") 
      select node; 

foreach(var element in query) 
{ 
    element.SetAttributeValue("status", "running"); 
} 
+0

感谢您的答复。 我不需要创建一个新的元素,我想添加属性到所有现有的元素... 我大概可以选择查询中的所有元素,遍历查询添加属性,然后保存查询作为原始文档,但这似乎相当不雅。 – Number8 2009-08-14 19:34:42

+0

哦,我明白你在说什么了。你为什么不喜欢你提到的技术? – 2009-08-14 19:37:21

+0

查看我上面更新的评论。 – 2009-08-14 19:49:10