добавление Xelement в соответствии со спецификацией c условие c# - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть этот XML код, я хотел бы вставить дочерний узел в соответствии с указанным c условием другого узла.

    <?xml version="1.0" encoding="utf-8"?>
<ArrayOfTag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <Tag>
    <AssociatedDocumentIds>
      <string>3dfeba3d-6660-4241-b2a4-0d4c256a299f</string>
    </AssociatedDocumentIds>
    <IsBold>false</IsBold>
    <IsFavorite>true</IsFavorite>
    <Label>Test-Auto-Tag3</Label>
  </Tag>
  <Tag>
    <AssociatedDocumentIds>
      <string>282cf07e-2f5a-42d0-a555-e3085b1ba389</string>
    </AssociatedDocumentIds>
    <IsBold>false</IsBold>
    <IsFavorite>true</IsFavorite>
    <Label>AFF-0101</Label>
  </Tag>
  </ArrayOfTag>

Я хотел бы вставить <string>487fgjke4f-5g434-42d0-ag95-e3083f1fe342</string> внутри <AssociatedDocumentIds> где <Label>= Test-Auto-Tag3

я загружаю документ используя

 XDocument xmlSettingTag = XDocument.Load(cheminTags);
 XElement AssoAff = new XElement("AssociatedDocumentIds");
    AssoAff.Add(new XElement("string", DocKey)); ------where <Label> = Test-Auto-Tag3

1 Ответ

0 голосов
/ 20 апреля 2020

Я решил проблему с помощью этого кода

var lbls = xmlSettingTag.Elements();
foreach (var lbl in lbls.Elements("Tag"))
 {
    var lb = lbl.Element("Label").Value;
      if (lb == "Test-Auto-Tag3") 
       {
         lbl.Element("AssociatedDocumentIds").Add(new XElement("string","487fgjke4f-5g434-42d0-ag95-e3083f1fe342"));
       }                                              
  }
    xmlSettingTag.Save(cheminTags);
...