Any method with the name 'Append' in it will always likely put new stuff at the end, hence its name. You want ot be looking at the 'Insert' methods instead.
XmlNode.InsertBefore for example takes another node as the place to insert before, so something like this would work:
Code:
if( xmlParent.ChildNodes.Count == 0 )
xmlParent.Append(newNode);
else
xmlParent.InsertBefore(newNode, xmlParent.ChildNodes[0]);
/- Sam Judson : Wrox Technical Editor -/