Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
sınıfı, XPathNavigator bir XML belgesinden düğümleri ve değerleri kaldırmak için kullanılan bir yöntem kümesi sağlar. Bu yöntemleri kullanabilmek için nesnenin XPathNavigator düzenlenebilir olması, yani özelliğinin CanEdit olması truegerekir.
XPathNavigator sınıfının CreateNavigator yöntemi tarafından oluşturulan XmlDocument XML belgesini düzenleyebilen nesnelerdir. XPathNavigator sınıfı tarafından XPathDocument oluşturulan nesneler salt okunur durumundadır ve XPathNavigator nesnesi tarafından oluşturulan bir XPathDocument nesnenin düzenleme yöntemlerini kullanma girişimleri bir NotSupportedException ile sonuçlanıyor.
Düzenlenebilir XPathNavigator nesneler oluşturma hakkında daha fazla bilgi için bkz. XPathDocument ve XmlDocument kullanarak XML Verilerini Okuma.
Düğümler Kaldırılıyor
XPathNavigator sınıfı, DeleteSelf yöntemini kullanarak bir XML belgesinden düğümleri kaldırır.
Düğümü Kaldırma
XPathNavigator sınıfı, DeleteSelf nesnesinin şu anda üzerinde konumlandığı geçerli düğümü bir XML belgesinden silmek için XPathNavigator yöntemini sağlar.
Yöntemi kullanılarak DeleteSelf bir düğüm silindikten sonra, artık nesnenin kökünden bu düğüme XmlDocument erişilemez. Bir düğüm silindikten sonra , XPathNavigator silinen düğümün üst düğümünde konumlandırılır.
Silme işlemi, silinen düğümde konumlandırılan hiçbir XPathNavigator nesnenin konumunu etkilemez. Bu XPathNavigator nesneler, silinen alt ağaç içinde taşınabilirler, ancak XPathNavigator sınıfının normal düğüm kümesi gezinti yöntemleri kullanılarak ana düğüm ağacına taşınamazlar, şu anlamda geçerlidir.
Uyarı
MoveTo sınıfının yöntemiXPathNavigator, bu XPathNavigator nesneleri ana düğüm ağacına veya ana düğüm ağacından silinen alt ağacına geri taşımak için kullanılabilir.
Aşağıdaki örnekte, price dosyasındaki ilk book öğesinin contosoBooks.xml öğesi, DeleteSelf yöntemi kullanılarak silinir. öğe silindikten sonra nesnenin XPathNavigator konumu price üst book öğededir.
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);
Örnek, contosoBooks.xml dosyasını giriş olarak alır.
<?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>
Öznitelik Düğümünü Kaldırma
Öznitelik düğümleri, DeleteSelf yöntemi kullanılarak bir XML belgesinden kaldırılır.
Bir öznitelik düğümü silindikten sonra, artık bir XmlDocument nesnenin kök düğümünden erişilemez ve XPathNavigator nesne üst öğeye konumlandırılır.
Varsayılan Öznitelikler
Öznitelikleri kaldırmak için kullanılan yöntemden bağımsız olarak, XML belgesi için DTD veya XML Şemasında varsayılan öznitelikler olarak tanımlanan öznitelikleri kaldırmaya yönelik özel sınırlamalar vardır. Ait oldukları öğe de kaldırılmadığı sürece varsayılan öznitelikler kaldırılamaz. Varsayılan öznitelikler, varsayılan öznitelikleri bildirilen öğeler için her zaman bulunur ve sonuç olarak, varsayılan özniteliğin silinmesi, öğeye eklenen ve bildirilen varsayılan değere başlatılan bir değiştirme özniteliğiyle sonuçlanır.
Değerleri Kaldırma
Bu XPathNavigator sınıfı, yazılmamış ve yazılı değerleri bir XML belgesinden kaldırmak için SetValue ve SetTypedValue yöntemlerini sağlar.
Yazılmamış Değerleri Kaldırma
SetValue yöntemi, parametre olarak geçirilen yazılmamış string değerini, XPathNavigator nesnesinin şu anda konumlandırıldığı düğümün değeri olarak ekler.
SetValue yöntemine bir boş dize geçirildiğinde geçerli düğümün değeri kaldırılır.
Aşağıdaki örnek, price yöntemini kullanarak book dosyasındaki ilk contosoBooks.xml öğesindeki SetValue öğesinin değerini kaldırır.
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);
Örnek, contosoBooks.xml dosyasını giriş olarak alır.
<?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>
Yazılan Değerleri Kaldırma
Bir düğümün türü bir W3C XML Şeması basit türü olduğunda, SetTypedValue yöntemi tarafından eklenen yeni değer, değer ayarlanmadan önce basit türün kısıtlamalarına göre kontrol edilir. Yeni değer düğümün türüne göre geçerli değilse (örneğin, türü -1olan bir öğede değerini xs:positiveInteger ayarlama), bir özel durumla sonuçlanır. Yöntem SetTypedValue ayrıca bir parametre olarak null içine geçirilemez. Sonuç olarak, türü belirtilen düğümün değerinin kaldırılması, düğümün şema türüyle uyumlu olmalıdır.
Aşağıdaki örnek, price dosyasındaki ilk book öğesinin contosoBooks.xml öğesinin değerini SetTypedValue olarak ayarlayarak 0 yöntemini kullanarak değerini kaldırır. Düğümün değeri kaldırılmaz, ama belirtilen veri türüne xs:decimal göre kitabın fiyatı kaldırılmıştır.
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);
Ad Alanı Düğümleri
Ad alanı düğümleri bir XmlDocument nesneden silinemez. DeleteSelf yöntemini kullanarak ad alanı düğümlerini silmek bir istisnanın oluşmasına neden olur.
InnerXml ve OuterXml Özellikleri
InnerXml sınıfının ve OuterXml özellikleri, bir XPathNavigator nesnenin XPathNavigator şu anda konumlandırılmış olduğu düğümlerin XML işaretlemesini değiştirir.
InnerXml özelliği, XPathNavigator nesnesinin şu anda üzerinde konumlandırıldığı alt düğümlerin XML işaretlemesini, verilen XML'nin ayrıştırılmış string içeriğiyle değiştirir. Benzer şekilde, OuterXml özelliği hem XPathNavigator nesnesinin şu anda bulunduğu alt düğümlerin XML işaretlemesini hem de geçerli düğümün kendisini değiştirir.
Bu konuda açıklanan yöntemlere ek olarak, InnerXml ve OuterXml özellikleri bir XML belgesinden düğümleri ve değerleri kaldırmak için kullanılabilir. Düğümleri değiştirmek için InnerXml ve OuterXml özelliklerini kullanma hakkında daha fazla bilgi için XPathNavigator kullanarak XML Verilerini Değiştirme konusuna bakın.
XML Belgesini Kaydetme
Bu konuda açıklanan yöntemlerin sonucu olarak bir XmlDocument nesnede yapılan değişiklikleri kaydetmek sınıfının yöntemleri XmlDocument kullanılarak gerçekleştirilir. Nesnede XmlDocument yapılan değişiklikleri kaydetme hakkında daha fazla bilgi için bkz. Belge Kaydetme ve Yazma.