Вы можете сделать это очень просто. Объектно-ориентированное программирование - это путь.
Допустим, вы создали класс Order, который принимает XElement. Я напишу пару строк для вас.
public class Order
{
XElement self;
public Order(XElement order)
{
self = order;
}
public XElement Element { get { return self; } }
public string OrderNumber
{
// if your xml looks like <Order OrderNumber="somenumber" />
get { return (string)(self.Attribute("OrderNumber") ?? (object)"some default value/null"); }
// but if it looks like: <Order><OrderNumber>somenumber</OrderNumber></Order>
// get { return (string)(self.Element("OrderNumber") ?? (object)"some default value/null"); }
}
}
Остальные свойства Ордена вы должны будете заполнить самостоятельно. Для каждого значения Order создайте свойство, подобное OrderNumber, которое я сделал выше. Наличие свойств для каждого значения заказа упрощает доступ к данным.
Итак, для вашего основного кода вы должны иметь:
XElement file = XElement.Load(@"C:\onlinesales\neworders.xml");
Order[] orders = file.Elements("Order").Select(e => new Order(e)).ToArray();
Теперь, когда у вас есть все ваши заказы как отдельные объекты Order, считывайте данные из списка свойств при выводе в файл. Теперь нет необходимости хранить значения в StringBuilder, поскольку они находятся в объектах Order.
foreach(Order order in orders)
{
// write order.OrderNumber etc. / do whatever you want with the orders.
}