¿Cómo puedo actualizar / reemplazar un elemento de un XElement desde una cadena?

Así que aquí está mi caso.

Tengo un XElement, llamémoslo root, que tiene descendientes, que tienen descendientes, etc. Extraigo un descendiente usando LINQ to XML, lo cargo en un editor de notas usando.ToString() y editarlo. Ahora quiero actualizar / reemplazar el elemento descendiente original con la versión editada.

Permítanme mencionar que este es un archivo XML simple, sin esquema, que no usa DOM, etc. Solo necesito poder editar, actualizar / reemplazar un elemento.

Aquí hay una maqueta de mi XML:

<Root>
  <Genre Name="Rock">
    <Artist Name="Pink Floyd">
      <BandMembers>
        <Member>Nick Mason</Member>
        <Member>Syd Barret</Member>
        <Member>David Gilmour</Member>
        <Member>Roger Water</Member>
        <Member>Richard Wright</Member>
      </BandMembers>
      <Category>Favorite band of all time</Category>
    </Artist>
    <Artist Name="Led Zepelin">
      <Category>Love the band</Category>
    </Artist>
  </Genre>
  <Genre Name="Blues">
    <Artist Name="Muddy Waters">
      <Instrument>Harmonica</Instrument>
    </Artist>
    <Artist Name="Howling Wolf">
      <Instrument>Guitar</Instrument>
    </Artist>
  </Genre>
</Root>

Ahora diga que quiero editar el elemento "Pink Floyd" para corregir el apellido de Roger Waters. Obtengo ese elemento, lo convierto en una cadena, lo cargo en mi editor, hago los cambios que quiero y lo vuelvo a convertir en un XElement usando.Parse().

Ahora, ¿cómo puedo actualizar / reemplazar el nodo "Pink Floyd" en mi XML original?

Respuestas a la pregunta(1)

Su respuesta a la pregunta