В любом случае, с помощью LINQ, XmlDocument и т. Д. Я могу разбить большой xml-файл на более мелкие фрагменты и сохранить все значения родительского узла
Пример XML
<Inventory>
<Dealer>
<ID>123</ID>
<Phone>1235551234</Phone>
<Units>
<Unit>
<Year>
<Make />
<Model />
</Unit>
<Unit>
<Year />
<Make />
<Model />
</Unit>
</Units>
</Dealer>
<Dealer>
<ID>124</ID>
<Phone>1235554321</Phone>
<Units>
<Unit>
<Year />
<Make />
<Model />
</Unit>
<Unit>
<Year />
<Make />
<Model />
</Unit>
</Units>
</Dealer>
</Inventory>
Чанки должны выглядеть так для каждого узла Unit, найденного в исходном
<Inventory>
<Dealer>
<ID>123</ID>
<Phone>1235551234</Phone>
<Units>
<Unit>
<Year>
<Make />
<Model />
</Unit>
</Units>
</Dealer>
</Inventory>
. Я должен прояснить одну проблему, я пытаюсь программно построить чанки, начиная с узла "Unit".без знания того, что может содержаться в родительских элементах.
Мое решение до сих пор -
XDocument document = XDocument.Load("sample.xml");
var units = document.Descendents("Unit").ToList();
foreach (XElement unit in units)
{
XElement parent = unit;
XElement child = parent;
while (null != parent.Parent)
{
parent = parent.Parent;
parent.Descendents(child.Name).Remove();
parent.Add(child);
child = parent;
}
}
Это прекрасно работает для первой единицы в каждом узле дилера, каждой последующей единицыэтот дилер теряет родительскую информацию, а чанк содержит только узел Unit.