Как удалить все пространства имен из XML с C #?

Я ищу чистое, элегантное и умное решение для удаления пространств имен из всех элементов XML? Как бы функционировал, чтобы это выглядело?

Определенный интерфейс:

public interface IXMLUtils
{
        string RemoveAllNamespaces(string xmlDocument);
}

Пример XML для удаления NS из:

<?xml version="1.0" encoding="utf-16"?>
<ArrayOfInserts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <insert>
    <offer xmlns="http://schema.peters.com/doc_353/1/Types">0174587</offer>
    <type2 xmlns="http://schema.peters.com/doc_353/1/Types">014717</type2>
    <supplier xmlns="http://schema.peters.com/doc_353/1/Types">019172</supplier>
    <id_frame xmlns="http://schema.peters.com/doc_353/1/Types" />
    <type3 xmlns="http://schema.peters.com/doc_353/1/Types">
      <type2 />
      <main>false</main>
    </type3>
    <status xmlns="http://schema.peters.com/doc_353/1/Types">Some state</status>
  </insert>
</ArrayOfInserts>

После того, как мы вызываем RemoveAllNamespaces (xmlWithLotOfNs), мы должны получить:

  <?xml version="1.0" encoding="utf-16"?>
    <ArrayOfInserts>
      <insert>
        <offer >0174587</offer>
        <type2 >014717</type2>
        <supplier >019172</supplier>
        <id_frame  />
        <type3 >
          <type2 />
          <main>false</main>
        </type3>
        <status >Some state</status>
      </insert>
    </ArrayOfInserts>

Предпочтительным языком решения является C # на .NET 3.5 SP1.

Ответы на вопрос(29)

Ваш ответ на вопрос