Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kelas XPathNavigator menyediakan sekumpulan metode yang digunakan untuk menghapus simpul dan nilai dari dokumen XML. Untuk menggunakan metode ini, XPathNavigator objek harus dapat diedit, artinya, propertinya CanEdit harus true.
XPathNavigator objek yang dapat mengedit dokumen XML dibuat oleh CreateNavigator metode XmlDocument kelas. XPathNavigator Objek yang dibuat oleh kelas XPathDocument bersifat hanya-baca dan setiap upaya untuk menggunakan metode pengeditan dari sebuah objek yang dibuat oleh objek XPathNavigatorXPathDocument mengakibatkan NotSupportedException.
Untuk informasi selengkapnya tentang membuat objek yang dapat diedit XPathNavigator , lihat Membaca Data XML menggunakan XPathDocument dan XmlDocument.
Menghapus Simpul
Kelas XPathNavigator menyediakan DeleteSelf metode untuk menghapus simpul dari dokumen XML.
Menghapus Node
Kelas XPathNavigator menyediakan metode DeleteSelf untuk menghapus simpul saat ini di mana sebuah objek XPathNavigator saat ini diposisikan dari dokumen XML.
Setelah simpul dihapus menggunakan DeleteSelf metode , node tidak lagi dapat dijangkau dari akar XmlDocument objek. Setelah simpul dihapus, XPathNavigator diposisikan pada simpul induk dari simpul yang dihapus.
Operasi penghapusan tidak memengaruhi posisi objek apa pun yang XPathNavigator diposisikan pada simpul yang dihapus. Objek-objek ini XPathNavigator valid dalam arti mereka dapat bergerak di dalam subtree yang dihapus, tetapi tidak dapat dipindahkan ke pohon simpul utama menggunakan metode navigasi node set reguler dari kelas XPathNavigator.
Nota
Metode MoveTo dari kelas XPathNavigator dapat digunakan untuk memindahkan XPathNavigator objek ini kembali ke pohon simpul utama, atau dari pohon simpul utama ke subtree yang telah dihapus.
Dalam contoh berikut, elemen price dari elemen book pertama dari file contosoBooks.xml dihapus menggunakan metode DeleteSelf. Posisi XPathNavigator objek setelah price elemen dihapus ada di elemen induk book .
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)
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);
Contoh mengambil contosoBooks.xml file sebagai input.
<?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>
Penghapusan Node Atribut
Simpul atribut dihapus dari dokumen XML dengan metode DeleteSelf.
Setelah simpul atribut dihapus, simpul tidak lagi dapat dijangkau dari simpul XmlDocument akar objek dan XPathNavigator objek diposisikan pada elemen induk.
Atribut Bawaan
Terlepas dari metode yang digunakan untuk menghapus atribut, ada batasan khusus untuk menghapus atribut yang didefinisikan sebagai atribut default dalam Skema DTD atau XML untuk dokumen XML. Atribut default tidak dapat dihapus kecuali elemen miliknya juga dihapus. Atribut default selalu ada untuk elemen yang memiliki atribut default yang dideklarasikan, dan sebagai hasilnya, menghapus atribut default menghasilkan atribut pengganti yang dimasukkan ke dalam elemen dan diinisialisasi ke nilai default yang dideklarasikan.
Menghapus Nilai
Kelas XPathNavigator menyediakan metode SetValue dan SetTypedValue untuk menghapus nilai yang tidak ditentukan dan ditentukan dari dokumen XML.
Menghapus Nilai yang Tidak Dititik
Metode SetValue ini hanya menyisipkan nilai yang tidak diketik string yang diteruskan sebagai parameter sebagai nilai simpul XPathNavigator tempat objek saat ini diposisikan. Meneruskan string kosong ke metode SetValue menghapus nilai dari simpul saat ini.
Contoh berikut menghapus nilai elemen pertama price dalam file book menggunakan metode contosoBooks.xml.
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.SetValue("")
navigator.MoveToRoot()
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.SetValue("");
navigator.MoveToRoot();
Console.WriteLine(navigator.OuterXml);
Contoh mengambil contosoBooks.xml file sebagai input.
<?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>
Menghapus Nilai Yang Dititik
Ketika jenis node adalah jenis sederhana dari Skema XML W3C, nilai baru yang dimasukkan oleh metode SetTypedValue diperiksa dengan faset dari jenis sederhana sebelum nilai ditetapkan. Jika nilai baru tidak valid sesuai dengan jenis simpul (misalnya, mengatur nilai -1 pada elemen yang jenisnya xs:positiveInteger), nilai tersebut menghasilkan pengecualian. Metode SetTypedValue juga tidak dapat diteruskan null sebagai parameter. Akibatnya, penghapusan nilai dari simpul dengan tipe tertentu harus sesuai dengan jenis skema dari simpul tersebut.
Contoh berikut menghapus nilai price elemen elemen pertama book dalam contosoBooks.xml file menggunakan SetTypedValue metode dengan mengatur nilai ke 0. Nilai simpul tidak dihapus, tetapi harga buku telah dihapus sesuai dengan jenis datanya .xs:decimal
Dim settings As XmlReaderSettings = New XmlReaderSettings()
settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd")
settings.ValidationType = ValidationType.Schema
Dim reader As XmlReader = XmlReader.Create("contosoBooks.xml", settings)
Dim document As XmlDocument = New XmlDocument()
document.Load(reader)
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.SetTypedValue(0)
navigator.MoveToRoot()
Console.WriteLine(navigator.OuterXml)
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create("contosoBooks.xml", settings);
XmlDocument document = new XmlDocument();
document.Load(reader);
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.SetTypedValue(0);
navigator.MoveToRoot();
Console.WriteLine(navigator.OuterXml);
Node Namespace
Simpul namespace tidak dapat dihapus dari XmlDocument objek. Upaya untuk menghapus node namespace menggunakan metode DeleteSelf mengakibatkan pengecualian.
Properti InnerXml dan OuterXml
Properti InnerXml dan OuterXml dari kelas XPathNavigator mengubah markup XML dari simpul di mana objek XPathNavigator berada saat ini.
Properti InnerXml mengubah markup XML dari simpul anak tempat XPathNavigator objek saat ini diposisikan dengan konten XML string yang diurai. Demikian pula, properti OuterXml mengubah markup XML dari simpul anak yang ditempati objek XPathNavigator saat ini serta simpul saat ini itu sendiri.
Selain metode yang dijelaskan dalam topik ini, InnerXml properti dan OuterXml dapat digunakan untuk menghapus simpul dan nilai dari dokumen XML. Untuk informasi selengkapnya tentang menggunakan InnerXml properti dan OuterXml untuk memodifikasi simpul, lihat topik Ubah Data XML menggunakan XPathNavigator .
Menyimpan Dokumen XML
Menggunakan metode dari kelas XmlDocument untuk menyimpan perubahan yang dilakukan pada objek XmlDocument sebagai hasil dari metode yang dijelaskan dalam topik ini. Untuk informasi selengkapnya tentang menyimpan perubahan yang XmlDocument dilakukan pada objek, lihat Menyimpan dan Menulis Dokumen.