удалить указанный c дочерний элемент из xml документа - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть xml файл, который, как показано ниже

    <?xml version="1.0" encoding="utf-8"?>
   <ArrayOfEtiquette xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Etiquette>
     <BgColor>#8075D1C5</BgColor>
     <BorderColor>#FF4E5B6F</BorderColor>
     <AssociatedAffaireId>
       <string>d4689f33-5600-47fe-883d-efcbf5e469c2</string>
       <string>203cc4a8-8c24-4a2d-837c-29c7c1f73007</string>
       <string>1bae35dd-d501-4d87-bdd4-147fc0ba29d2</string>
     </AssociatedAffaireId>
     <Label>Ouverte</Label>
    </Etiquette>
   </ArrayOfEtiquette>

Мне нужно удалить только

<string>203cc4a8-8c24-4a2d-837c-29c7c1f73007</string>

это код, который я пробовал, но он не работает,

    XDocument xmlSettings = XDocument.Load(chemin + "\\Etiquettes.xml");

    if(xmlSettings.ToString().Contains(aff.Id))
   {
     string newXmlSettings =  xmlSettings.ToString().Replace("<string>" + 
     aff.Id+ "</string>","");
   }
        xmlSettings.Save(chemin + "\\Etiquettes.xml");

С уважением.

1 Ответ

0 голосов
/ 25 февраля 2020

Вы можете попробовать с LINQ

//load the xml
var xdoc = XDocument.Load(filePath);
//find and remove
xdoc.Descendants("string")
    .Where(x => x.Value == "203cc4a8-8c24-4a2d-837c-29c7c1f73007")
    .Remove();    
//save it back 
xdoc.Save(filePath);
...