Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az XPathNavigator osztály a csomópontok és értékek XML-dokumentumból való eltávolítására szolgáló módszerek készletét tartalmazza. A metódusok használatához az XPathNavigator objektumnak szerkeszthetőnek kell lennie, azaz a tulajdonságának CanEdit kell lennie true.
XPathNavigator az XML-dokumentumokat szerkeszteni képes objektumok az CreateNavigator osztály metódusával XmlDocument jönnek létre. XPathNavigator Az XPathDocument osztály által létrehozott objektumok írásvédettek, és az XPathNavigator objektum által létrehozott XPathDocument módszerek használatára tett bármely kísérlet egy NotSupportedException-ben végződik.
A szerkeszthető XPathNavigator objektumok létrehozásáról további információt az XML-adatok olvasása az XPathDocument és az XmlDocument használatával című témakörben talál.
Csomópontok eltávolítása
Az XPathNavigator osztály biztosítja a DeleteSelf csomópontok XML-dokumentumból való eltávolításának módját.
Csomópont eltávolítása
Az XPathNavigator osztály az DeleteSelf metódust biztosítja, amely lehetővé teszi az aktuálisan egy objektum által kijelölt csomópont törlését egy XML-dokumentumból.
Miután a metódussal DeleteSelf törölt egy csomópontot, az már nem érhető el az XmlDocument objektum gyökeréből. A csomópont törlése után a XPathNavigator a törölt csomópont szülőcsomópontjára kerül.
A törlési művelet nem befolyásolja a törölt csomóponton elhelyezett objektumok pozícióját XPathNavigator . Ezek az XPathNavigator objektumok abban az értelemben érvényesek, hogy a törölt résztartományon belül mozoghatnak, de nem helyezhetők át a fő csomópontfára az XPathNavigator osztály normál csomópontkészletének navigációs módszereivel.
Megjegyzés:
Az MoveTo osztály metódusával ezeket az XPathNavigator objektumokat vissza lehet helyezni XPathNavigator a fő csomópontfára, vagy a fő csomópontfáról a törölt résztartományba.
Az alábbi példában a price fájl első book elemének contosoBooks.xml eleme a metódussal DeleteSelf törlődik. Az XPathNavigator elem törlése után az price objektum a szülő book elemhez kerül.
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);
A példa bemenetként használja a contosoBooks.xml fájlt.
<?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>
Attribútumcsomópont eltávolítása
Az attribútumcsomópontok a metódus használatával törlődnek egy DeleteSelf XML-dokumentumból.
Az attribútumcsomópont törlése után már nem érhető el az XmlDocument objektum gyökércsomópontjáról, és az XPathNavigator objektum a szülőelemen van elhelyezve.
Alapértelmezett attribútumok
Az attribútumok eltávolítására használt módszertől függetlenül az XML-dokumentum DTD- vagy XML-sémájában alapértelmezett attribútumként definiált attribútumok eltávolítására speciális korlátozások vonatkoznak. Az alapértelmezett attribútumok csak akkor távolíthatók el, ha az elem, amelyhez tartoznak, szintén el lesz távolítva. Az alapértelmezett attribútumok mindig megtalálhatók azon elemeknél, amelyek alapértelmezett attribútumait deklarálták, és ennek eredményeképpen az alapértelmezett attribútum törlése egy helyettesítő attribútum beszúrását eredményezi az elembe, és inicializálódik a deklarált alapértelmezett értékre.
Értékek eltávolítása
Az XPathNavigator osztály biztosítja a SetValue nem beírt és SetTypedValue beírt értékek XML-dokumentumból való eltávolításának módszereit.
Nem beírt értékek eltávolítása
A SetValue metódus egyszerűen beszúrja a paraméterként átadott nem beírt string értéket annak a csomópontnak XPathNavigator az értékeként, amelyen az objektum jelenleg elhelyezve van. Ha egy üres sztringet a metódusnak ad SetValue át, az eltávolítja az aktuális csomópont értékét.
Az alábbi példa eltávolítja a price fájl első book elemének értékét a contosoBooks.xmlSetValue metódus használatával.
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);
A példa bemenetként használja a contosoBooks.xml fájlt.
<?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>
Gépelt értékek eltávolítása
Ha a csomópont típusa egyszerű W3C XML-sématípus, a metódus által SetTypedValue beszúrt új értéket az érték beállítása előtt a rendszer ellenőrzi az egyszerű típus aspektusai között. Ha az új érték nem érvényes a csomópont típusának megfelelően (például egy elem -1 értékének beállítása, amelynek típusa xs:positiveInteger), az kivételt eredményez. A SetTypedValue metódus paraméterként sem adható át null . A gépelt csomópont értékének eltávolításakor meg kell felelnie a csomópont sématípusának.
Az alábbi példa eltávolítja a price fájl első book elemének értékét a contosoBooks.xml metódus használatával az SetTypedValue érték 0beállításával. A csomópont értéke nem kerül eltávolításra, de a könyv ára az adattípusának xs:decimal megfelelően el lett távolítva.
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);
Névtércsomópontok
Egy XmlDocument objektumból nem törölhetők névtércsomópontok. Kivételt eredményez a névtércsomópontok törlése a DeleteSelf metódus használatával.
Az InnerXml és az OuterXml tulajdonságai
A(z) InnerXml osztály OuterXml és XPathNavigator tulajdonságai módosítják azon csomópontok XML jelölését, ahol a XPathNavigator objektum jelenleg elhelyezkedik.
A InnerXml tulajdonság az XPathNavigator objektum által jelenleg pozicionált gyermekcsomópontok XML-jelölését módosítja az adott XML string elemezett tartalma alapján. Hasonlóképpen, a OuterXml tulajdonság megváltoztatja a gyermekcsomópontok XML-jelölését, amelyen XPathNavigator az objektum jelenleg elhelyezve van, valamint az aktuális csomópontot is.
A jelen témakörben ismertetett módszerek mellett a InnerXml és OuterXml tulajdonságok segítségével eltávolíthatók a csomópontok és értékek egy XML-dokumentumból. A csomópontok módosításával és a InnerXml tulajdonságokkal kapcsolatos további információkért tekintse meg az OuterXml.
XML-dokumentum mentése
A témakörben ismertetett módszerek eredményeként az objektum módosításainak mentése XmlDocument a XmlDocument osztály metódusaival történik. Az objektum módosításainak XmlDocument mentéséről további információt a Dokumentum mentése és írása című témakörben talál.