webForumDet fria alternativet

deleta nod i en XML fil, hur?

.NET

8 svar · 543 visningar · startad av Metatron

Medlem sedan dec. 200697 inlägg
Frågan#1

Har skapat en asp.net sida som använder en xml-fil som databas.

Jag vet hur jag ska göra för att lägga till bilder men hur gör jag för att tabort?
Hur ska jag göra om jag vet filnamnet och vill ta bort hela noden pic.

XML-fil

<images>
<pic>
<image>l_DSC01217.JPG</image>
<caption>asdfasdf</caption>
<thumbnail>thumbs/t_DSC01217.JPG</thumbnail>
</pic>
<pic>
<image>l_DSC01228.JPG</image>
<caption>sdfsdf</caption>
<thumbnail>thumbs/t_DSC01228.JPG</thumbnail>
</pic>
<images>

Vill att den ska funka så här.

If node.image == textbox.text
delete node

Alltså om textbox.text hade varit l_DSC01217.JPG skulle xml-filen se ut såhär efteråt.

<images>
<pic>
<image>l_DSC01228.JPG</image>
<caption>sdfsdf</caption>
<thumbnail>thumbs/t_DSC01228.JPG</thumbnail>
</pic>
<images>

Fråga 2: Går det att samtidigt deleta den fysiska bilden från webbservern?
Hur gör jag det.

Förklara gärna med c# kod

Tacksam för svar

Medlem sedan sep. 2005673 inlägg
#2

xml-frågan vet jag itne hur man gör på rak arm, men ta bort en fil gjorde jag för ett tag sen... det är väldigt enkelt!

//exempel
            FileInfo file = new FileInfo(sökvägen till filen som ska bort);
            if (file.Exists)
                file.Delete();

Du måste såklart ha rättigheter så att du får ta bort filer i katalogen också.

Medlem sedan dec. 19996 721 inlägg
#3

Läs in filen i XmlDocument, leta upp noden med SelectSingleNode och ta bort den med RemoveChild

Medlem sedan dec. 200697 inlägg
#4

Skulle bli väldigt tacksam om du kunde visa med kod som exempel.

Tacksam för den hjälp jag fått hittills!

Medlem sedan dec. 200697 inlägg
#5

Hur gör jag för att ta bort filen? Hur vet jag om jag har rättigheterna

Har provat nedanstående kod men inget händer!?

    FileInfo file = new FileInfo(bild);
    if (file.Exists)
            file.Delete();

-----------------------------------------------------
Har löst XML problemet: Nedan koden om ngn har samma problem
-----------------------------------------------------

protected void Button1_Click(object sender, EventArgs e)
{
    XmlDocument doc = new XmlDocument();
    doc.Load(Server.MapPath("XXX.xml"));
    String bild = (string)myParentDDList.SelectedValue;

    XmlNode myNode = doc.SelectSingleNode("images/pic\[image='" + bild + "'\]");
                                          
    XmlElement root = doc.DocumentElement;
    root.RemoveChild(myNode);
    //Slutligen sparar vi vårt nya XML-dokument
    doc.Save(Server.MapPath("XXX.xml"));

    FileInfo file = new FileInfo(bild);
    if (file.Exists)
            file.Delete();
}
Medlem sedan sep. 2005673 inlägg
#6

Har du kollat så sökvägen verkligen är rätt så inte file.exist är false? Glöm inte dubbla "\\" i sökvägen eller ett @ framför! (c:\\katalog\\fil.gif)

Medlem sedan dec. 200697 inlägg
#7

Får det endå inte att fungera som jag vill. c:\\ fungerar men jag skulle hellst vilja ha det som jag beskriver nedan.

den fil jag vill deleta har sökvägen: ../Admin/Xtras/Bild/bild.jpg

Alltså aspx sidan som ska göra jobbet ligger i en map, ../Sidor/xtras.aspx

Jag skulle hellst vilja använda mig av denna sökväg ../Admin/Xtras/Bild/bild.jpg går det?

Tack för svaren, alla svar har varit till stor hjälp. Snart är det löst ;)

Medlem sedan dec. 19996 721 inlägg
#8

Då får du använda Server.MapPath, så att du får ut den fysiska sökvägen till filen.

Medlem sedan dec. 200697 inlägg
#9

Funkade utmärkt med Server.MapPath!

Tack alla för hjälpen, alla problem lösta.

-----------------------------------------------------------
Lösningen
-----------------------------------------------------------

String bild = (string)myParentDDList.SelectedValue;    

FileInfo file = new FileInfo(Server.MapPath("../" + bild));
if (file.Exists)
{
    file.Delete();
    Response.Write("Hot MAMA");
}
261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)