Я не верю, что можно удалить этот элемент, используя сериализацию xml по умолчанию (с атрибутами). Если бы вы могли это сделать, то сериализация вашего ShopItem
класса привела бы к плохо сформированному xml (без корневого элемента) для объекта, что недопустимо.
Однако вы можете вручную реализовать IXmlSerializable
. Это даст вам тот же точный контроль, что и вам.
[ Редактировать ] - извините - неправильно прочитал, что вы пытались удалить варианты, а не SHOPITEM. Чтобы удалить «внешний» элемент списка, просто пометьте его атрибутом [XmlElement], а не атрибутом [XmlArrayItem]. Это приведет к тому, что записи списка будут просто использовать указанное имя элемента, без переноса списка во внешний элемент.
Для удаления пространств имен это контролируется самим seriliazer, а не разметкой в классе.
Я только что заметил, что, хотя я обновил этот ответ, Рубенс Фариас предоставил ответ, который показывает вам, как устранить пространство имен.