簡體   English   中英

c#linq to xml:根據值將子元素添加到特定的父元素

[英]c# linq to xml: add child element to specific parent element based upon value

我正在通過LINQ to XML在c#中創建XML配置文件編輯器。 我在插入具有特定父值的子節點時遇到了困難。

我現在的代碼:

var xdoc = XElement.Load(config.ConfigPath);
....
xdoc.Descendants("grandparent")
.Where(a => a.Element("parent")
.Value == "targetvalue").FirstOrDefault()
.Add(new XElement("grandchild", grandchildvalue));  

收益率:

<grandparent>
     <parent>
     <grandchild>

而不是預期的:

<grandparent>
     <parent>
          <grandchild>

在代碼中的這個特定點,只創建了祖父節點和父節點,並且正在創建孫元素及其各自的值。 如何使孫子元素從屬於父元素?

提前感謝您的任何幫助。

您的LINQ應該返回<parent>元素:

xdoc.Descendants("grandparent")
    .Elements("parent")
    .FirstOrDefault(o => (string)o == "targetvalue")
    .Add(new XElement("grandchild", grandchildvalue));  

感謝您的答復。 當修改為:您的響應確實產生了正確的結果:

 xdoc.Descendants("grandparent")
    .Descendants("parent")
    .Where(a => a.Attribute("name").Value == parentvalue).FirstOrDefault()                                                                            
    .Add(new XElement("grandchild", grandchildvalue));

事實證明,我以前的xml結構是錯誤的。 在為父節點提供值而不是屬性時,我得到的輸出如下:

<parent>parentvalue</parent><grandchild>grandchildvalue</grandchild>

他們在同一水平。 通過允許將孫子的值設置為從屬父級的屬性設置父級的值。 謝謝你幫助我找到這個愚蠢的初學者的錯誤!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM