1

我想在以下 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> 

XML 数据用作使用以下 Linq 的 DataGrid 的数据源。

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# 中的答案是可以的。谢谢。

4

2 回答 2

1

尝试这个:

foreach (var xe in xml.Descendants("data"))
{
    xe.Element("value")
        .AddAfterSelf(new XElement("newValue", 42));
}
于 2012-11-07T02:21:08.357 回答
0

如果您希望newValue在处理之前添加到您的 XML 中,您可以执行以下操作:

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

从您的 Web 服务加载xml的,在哪里。XDocument

于 2012-11-07T02:12:54.757 回答