LINQ更新XDocument

时间:2009-08-14 19:22:31

标签: xml linq

我有一些xml:

<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"/>

C#中的LINQ可以实现吗? 谢谢任何提示...

1 个答案:

答案 0 :(得分: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结构的一部分来生成新属性。

更新:如果要向查询结果添加属性,请执行以下操作:

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

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