XPathNavigator.DeleteSelf Método

Definición

Elimina el nodo actual y sus nodos secundarios.

public:
 virtual void DeleteSelf();
public virtual void DeleteSelf ();
abstract member DeleteSelf : unit -> unit
override this.DeleteSelf : unit -> unit
Public Overridable Sub DeleteSelf ()

Excepciones

XPathNavigator está colocado en un nodo que no se puede eliminar, como el nodo raíz o un nodo de espacio de nombres.

XPathNavigator no admite la edición.

Ejemplos

En el ejemplo siguiente, el price elemento del primer book elemento del contosoBooks.xml archivo se elimina mediante el DeleteSelf método . La posición del objeto XPathNavigator después de eliminar el elemento price se encuentra en el elemento book primario.

XmlDocument^ document = gcnew XmlDocument();
document->Load("contosoBooks.xml");
XPathNavigator^ navigator = document->CreateNavigator();

navigator->MoveToChild("bookstore", "http://www.contoso.com/books");
navigator->MoveToChild("book", "http://www.contoso.com/books");
navigator->MoveToChild("price", "http://www.contoso.com/books");

navigator->DeleteSelf();

Console::WriteLine("Position after delete: {0}", navigator->Name);
Console::WriteLine(navigator->OuterXml);
XmlDocument document = new XmlDocument();
document.Load("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();

navigator.MoveToChild("bookstore", "http://www.contoso.com/books");
navigator.MoveToChild("book", "http://www.contoso.com/books");
navigator.MoveToChild("price", "http://www.contoso.com/books");

navigator.DeleteSelf();

Console.WriteLine("Position after delete: {0}", navigator.Name);
Console.WriteLine(navigator.OuterXml);
Dim document As XmlDocument = New XmlDocument()
document.Load("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

navigator.MoveToChild("bookstore", "http://www.contoso.com/books")
navigator.MoveToChild("book", "http://www.contoso.com/books")
navigator.MoveToChild("price", "http://www.contoso.com/books")

navigator.DeleteSelf()

Console.WriteLine("Position after delete: {0}", navigator.Name)
Console.WriteLine(navigator.OuterXml)

En el ejemplo se toma como entrada el archivo contosoBooks.xml.

<?xml version="1.0" encoding="utf-8" ?>  
<bookstore xmlns="http://www.contoso.com/books">  
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">  
        <title>The Autobiography of Benjamin Franklin</title>  
        <author>  
            <first-name>Benjamin</first-name>  
            <last-name>Franklin</last-name>  
        </author>  
        <price>8.99</price>  
    </book>  
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">  
        <title>The Confidence Man</title>  
        <author>  
            <first-name>Herman</first-name>  
            <last-name>Melville</last-name>  
        </author>  
        <price>11.99</price>  
    </book>  
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">  
        <title>The Gorgias</title>  
        <author>  
            <name>Plato</name>  
        </author>  
        <price>9.99</price>  
    </book>  
</bookstore>  

Comentarios

  • se XPathNavigator coloca en el nodo primario del nodo eliminado cuando se elimina correctamente.

  • Si el nodo eliminado es un nodo de texto que es el contenido de un elemento con tipo simple, el elemento pierde su información de tipo. Esto significa que, cuando se coloca en el elemento , XmlTypeValueType las propiedades y TypedValue tienen los valores null, y Empty respectivamenteString.

  • Los nodos eliminados siguen siendo accesibles para XPathNavigator los objetos colocados sobre ellos antes de la eliminación. Sin embargo, se produce un error en los métodos que intentan alejarse del subárbol eliminado. Por ejemplo, los MoveToParent métodos y MoveToPrevious siempre generan un error cuando XPathNavigator se coloca sobre el nodo más eliminado. Esto se debe a que el nodo eliminado ya no está conectado al documento XML. Del mismo modo, el MoveToNext método siempre produce un error si XPathNavigator está situado en el nodo más eliminado de la parte inferior.

Se aplica a