Du får använda InsertBefore(newElem,xDoc.DocumentElement.FirstChild) i stället för AppendChild.
Frågan#1
Vill att när jag lägger till nya filer att datat sparas högst upp i xml-filen och inte lägst ner.
Alltså en ny fil ska hamna ovanför denna, inte under.
<images>
<pic>
<image>mama.jpg</image>
<caption>asd</caption>
<thumbnail>t_mama.jpg</thumbnail>
</pic>
</images>
Resultat:
<images>
<pic>
<image>papa.jpg</image>
<caption>asd</caption>
<thumbnail>t_papa.jpg</thumbnail>
</pic>
<pic>
<image>mama.jpg</image>
<caption>asd</caption>
<thumbnail>t_mama.jpg</thumbnail>
</pic>
</images>
Vad kan jag använda mig av?
Nedan finner ni koden för uppladdning av bilder.
protected void UploadImage(HttpPostedFile file)
{
string fileName = file.FileName.Substring(file.FileName.LastIndexOf('\\') + 1);
string filePath = MapPath("../Admin/XML//" + fileName);
using (System.Drawing.Image image = System.Drawing.Image.FromStream(file.InputStream))
using (Bitmap bitmap = new Bitmap(image, 480, 360))
{
bitmap.Save(MapPath("../Admin/XML/l_" + fileName), System.Drawing.Imaging.ImageFormat.Jpeg);
bitmap.Dispose();
}
using (System.Drawing.Image image = System.Drawing.Image.FromStream(file.InputStream))
using (Bitmap bitmap = new Bitmap(image, 60, 45))
{
bitmap.Save(MapPath("../Admin/XML/thumbs/t_" + fileName),
image.RawFormat);
bitmap.Dispose();
}
try
{
XmlDocument xDoc = new XmlDocument();
xDoc.Load(Server.MapPath("../Admin/XML/mama.xml"));
XmlElement newElem = xDoc.CreateElement("pic");
if (TextBox1.Text == "")
{
TextBox1.Text = "Mama";
}
newElem.InnerXml = "<image></image><caption></caption><thumbnail></thumbnail>";
newElem.AppendChild(xDoc.CreateWhitespace("\r\n")); // Linefeed
newElem["image"].InnerText = "admin/XML/l_" + fileName;
newElem["caption"].InnerText = TextBox1.Text;
newElem["thumbnail"].InnerText = "admin/XML/thumbs/t_" + fileName;
xDoc.DocumentElement.AppendChild(newElem);
XmlTextWriter writer = new XmlTextWriter(Server.MapPath("../Admin/XML/mama.xml"), null);
writer.Formatting = Formatting.Indented;
xDoc.PreserveWhitespace = true;
xDoc.WriteTo(writer);
writer.Close();