linq到XML将一个新元素插入每个节点的XML中



我想在以下XML中为数据节点的每个实例插入一个新元素

这是我拥有的初始XML:

<dataCollection totalCount="12" pageCount="1">
    <data>
        <date>2011-11-10T00:00:00.000-05:00</date> 
        <dataType>PRCP</dataType> 
        <station>GHCND:USW00014739</station> 
        <value>267</value> 
        <address>
            <home>X</home> 
        </address>
    </data>
    <data>
        <date>2011-11-10T00:00:00.000-05:00</date> 
        <dataType>PRCP</dataType> 
        <station>GHCND:USW00014739</station> 
        <value>267</value> 
        <address>
            <home>X</home> 
       </address>
    </data>
</dataCollection> 

,这是我试图实现

的XML
<dataCollection totalCount="12" pageCount="1">
    <data>
        <date>2011-11-10T00:00:00.000-05:00</date> 
        <dataType>TMIN</dataType> 
        <station>GHCND:USW00014739</station> 
        <value>267</value> 
        <newValue>60</newValue>  
        <address>
            <home>X</home> 
        </address>
    </data>
    <data>
        <date>2011-11-10T00:00:00.000-05:00</date> 
        <dataType>TMAX</dataType> 
        <station>GHCND:USW00014739</station> 
        <value>270</value>
        <newValue>62</newValue>  
        <address>
            <home>X</home> 
        </address>
    </data>
</dataCollection> 

使用以下LINQ使用XML数据作为数据源的数据源。

Dim elements = (From daDsc In xdoc.Descendants("data") _
            Select Data_Type = daDsc.Element("dataType").Value, _
            Raw_Value = daDsc.Element("value").Value,
            newValue = daDsc.Element("newValue"))

在vb.net中写下此内容,但是C#中的答案还可以。谢谢。

尝试以下:

foreach (var xe in xml.Descendants("data"))
{
    xe.Element("value")
        .AddAfterSelf(new XElement("newValue", 42));
}

如果您想在处理前将newValue添加到XML中,则可以做类似的事情:

For Each element As XElement In xml.Elements
  element.SetElementValue("newValue", "something")
Next

其中xmlXDocument,从您的Web服务加载。

最新更新