Zdravím. Při mazání uzlu v XML.xml podle id.attributu mi skočí chyba: Odkaz na objekt není nastaven na instanci objektu. Chybová hláška:
V aplikaci /VS došlo k chybě serveru.
Odkaz na objekt není nastaven na instanci objektu.
Popis: Při provádění aktuálního webového požadavku došlo k neošetřené výjimce. Další informace o chybě a o jejím původu v kódu naleznete v trasování zásobníku.
Podrobnosti o výjimce: System.NullReferenceException: Odkaz na objekt není nastaven na instanci objektu.
Zdrojová chyba:
Řádek 31: Dim root As XmlNode = XML.DocumentElement
Řádek 32: Dim smazat As XmlElement = root.SelectSingleNode("/zakaznici/zakaznik[@id='" & zakazniciIDDrop.SelectedValue & "']")
Řádek 33: root.RemoveChild(smazat)
Řádek 34: XML.Save(MapPath("") + "/zakaznici/" + "zakaznici.xml")
Řádek 35: Label1.Text = "Hotovo"
Zdrojový soubor: D:\Web\VS\mazani.aspx.vb Řádek: 33
Trasování zásobníku:
[NullReferenceException: Odkaz na objekt není nastaven na instanci objektu.]
System.Xml.XmlNode.RemoveChild(XmlNode oldChild) +33
mazani.del_zakaznik_Click(Object sender, EventArgs e) in D:\Web\VS\mazani.aspx.vb:33
System.EventHandler.Invoke(Object sender, EventArgs e) +0
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9633194
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724
Informace o verzi: Microsoft .NET Framework verze:4.0.30319; verze ASP.NET:4.0.30319.34237
Soubor .aspx.vb
Imports Microsoft.VisualBasic.FileIO.FileSystem
Imports System.Xml.XPath
Imports System
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Collections
Imports System.Data
Partial Class mazani
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim obsah_xml As New XmlDocument
obsah_xml.Load(MapPath("") + "/zakaznici/" + "zakaznici.xml")
Dim root As XmlNode = obsah_xml.DocumentElement
Dim novy_zaznam As XmlElement = obsah_xml.CreateElement("zakaznik")
Dim idp As String = root.LastChild.Attributes(0).Value
Dim id As String = root.FirstChild.Attributes(0).Value
For zakaznik As Integer = id To idp
zakazniciIDDrop.Items.Add(zakaznik)
Next
End If
End Sub
Protected Sub del_zakaznik_Click(sender As Object, e As EventArgs) Handles del_zakaznik.Click
Dim XML As New XmlDocument
XML.Load(MapPath("") + "/zakaznici/" + "zakaznici.xml")
Dim root As XmlNode = XML.DocumentElement
Dim smazat As XmlElement = root.SelectSingleNode("/zakaznici/zakaznik[@id='" & zakazniciIDDrop.SelectedValue & "']")
root.RemoveChild(smazat)
XML.Save(MapPath("") + "/zakaznici/" + "zakaznici.xml")
Label1.Text = "Hotovo"
Label1.Visible = True
End Sub
End Class
Soubor .aspx
<%@ Page Title="" Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="mazani.aspx.vb" Inherits="mazani" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<h2>
Mazání zákazníka
</h2><br />
<p>
Smaž zákazníka s ID:<asp:DropDownList ID="zakazniciIDDrop" runat="server"></asp:DropDownList></p>
<p>
<asp:Button ID="del_zakaznik" runat="server" Text="Smaž zákazníka" CssClass="button" OnClick="del_zakaznik_Click"/></p>
<asp:Label ID="Label1" runat="server" Visible="false"></asp:Label>
</asp:Content>
Doufám že tady nespamuju, ale našel jsem téma se stejnou chybou jen o SQL a to mi moc neporadilo. Uzel v XML se smaže, ale stránka hodí tuto chybu. Předem díky za rady.
|