Я не работал с KML, но библиотеки Linq to XML по сути являются заменой модели XmlDocument, XmlElement и т. Д. В System.Xml. С точки зрения памяти, я не знаю, лучше ли они, чем ваше текущее решение.
Один из подходов, которые я часто использую, - это создание набора классов данных, представляющих документ Xml, а затем использование XmlSerializer для преобразования объектов в Xml. Я, честно говоря, эта реализация не очень хорошая память, и я думаю, для ваших целей это может иметь смысл.
Вот быстрый пример. Скажем, я хочу создать следующий XML:
<Packages>
<Package Name="A">
</Package>
<Package Name="B">
<Dependencies>
<Dependency Package="C" />
<Dependency Package="A" />
</Dependencies>
</Package>
<Package Name="C">
<Dependencies>
<Dependency Package="A" />
</Dependencies>
</Package>
</Packages >
Вы можете создать следующие классы:
class Package
{
private List<Dependency> dependencies = new List<Dependency>();
public string Name { get; set; }
public List<Dependency> Dependencies { get { return dependencies; } set { dependencies = value; } }
}
class Dependency
{
public string Package { get; set; }
}
Используя класс System.Xml.Serialization.XmlSerializer, вы можете превратить Список в Xml, приведенный выше.
Таким образом, если вы создаете объектную модель для KML, которая легко сопоставляется с фактическим KML, как в примере выше, это должно быть несколько простой реализацией.