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 testvér-, gyermek- és attribútumcsomópontok XML-dokumentumokba való beszúrására szolgáló metódusokat tartalmaz. 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 beszúrása
Az XPathNavigator osztály metódusokat biztosít a testvér-, gyermek- és attribútumcsomópontok XML-dokumentumokba való beszúrásához. Ezek a módszerek lehetővé teszik csomópontok és attribútumok beszúrását különböző helyekre egy XPathNavigator objektum aktuális helyzetéhez viszonyítva, és az alábbi szakaszok ismertetik.
Testvércsomópontok beszúrási művelete
Az XPathNavigator osztály a következő metódusokat kínálja a testvércsomópontok beszúrásához.
Ezek a metódusok testvércsomópontokat szúrnak be a csomópont előtt és után, amelyen jelenleg egy XPathNavigator objektum van elhelyezve.
A InsertAfter és InsertBefore metódusok túlterheltek, és paraméterként elfogadnak egy string, XmlReader objektumot vagy egy XPathNavigator objektumot, amely tartalmazza a hozzáadni kívánt testvércsomópontot. Mindkét módszer a XmlWriter testvércsomópontok beszúrásához használt objektumot is visszaadja.
A InsertElementAfter és InsertElementBefore metódusok egyetlen testvércsomópontot szúrnak be a csomópont elé és mögé, amelyen egy XPathNavigator objektum jelenleg áll, a névtér előtagját, a helyi nevet, a névtér URI-t és az értéket paraméterként megadva.
Az alábbi példában egy új pages elem lesz beszúrva a price fájl első book elemének gyermekeleme contosoBooks.xml elé.
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.InsertBefore("<pages>100</pages>");
navigator.MoveToParent();
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.InsertBefore("<pages>100</pages>")
navigator.MoveToParent()
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>
További információkat a InsertAfter, InsertBefore, InsertElementAfter és InsertElementBefore metódusokkal kapcsolatban az osztály referenciadokumentációjábanXPathNavigator találhat.
Gyermekcsomópontok beszúrása
Az XPathNavigator osztály a következő metódusokat biztosítja a gyermekcsomópontok beszúrásához.
Ezek a metódusok hozzáfűzik és előre felfűzik a gyermekcsomópontokat azon csomópont XPathNavigator gyermekcsomópontjainak végéhez és elejéhez, amelyen az objektum jelenleg elhelyezve van.
A "Testvércsomópontok beszúrása" szakasz metódusaihoz hasonlóan a AppendChildPrependChild metódusok is elfogadnak egystring, XmlReader a gyermekcsomópontot tartalmazó objektumotXPathNavigator, amely paraméterként hozzáadható. Mindkét metódus a XmlWriter gyermekcsomópontok beszúrásához használt objektumot is visszaadja.
A "Testvércsomópontok beszúrása" szakasz metódusaihoz hasonlóan a AppendChildElementPrependChildElement metódusok is beszúrnak egy gyermekcsomópontot a csomópont XPathNavigator gyermekcsomópontjainak végére és elejére, az objektum jelenleg a névtér előtagjának, a helyi névnek, a névtér URI-jának és a paraméterként megadott értéknek a használatával van elhelyezve.
Az alábbi példában egy új pages gyermekelem lesz hozzáfűzve a fájl első book elemének gyermekelemeinek listájához contosoBooks.xml .
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.AppendChild("<pages>100</pages>");
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.AppendChild("<pages>100</pages>")
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>
További információkat a AppendChild, PrependChild, AppendChildElement és PrependChildElement metódusokkal kapcsolatban az osztály referenciadokumentációjábanXPathNavigator találhat.
Attribútumcsomópontok beszúrása
Az XPathNavigator osztály az alábbi metódusokat kínálja az attribútumcsomópontok beszúrásához.
Ezek a metódusok attribútumcsomópontokat szúrnak be azon az elemcsomóponton XPathNavigator , amelyen az objektum jelenleg elhelyezve van. A CreateAttribute metódus létrehoz egy attribútumcsomópontot az elemcsomóponton XPathNavigator , amelyen egy objektum jelenleg a névtér előtagja, a helyi név, a névtér URI és a paraméterként megadott érték használatával van elhelyezve. A CreateAttributes metódus egy XmlWriter attribútumcsomópontok beszúrására használt objektumot ad vissza.
Az alábbi példában a rendszer új discount és currency attribútumokat hoz létre a price fájl első book elemének gyermekelemén a contosoBooks.xmlXmlWriter metódus által CreateAttributes visszaadott objektummal.
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");
XmlWriter attributes = navigator.CreateAttributes();
attributes.WriteAttributeString("discount", "1.00");
attributes.WriteAttributeString("currency", "USD");
attributes.Close();
navigator.MoveToParent();
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")
Dim attributes As XmlWriter = navigator.CreateAttributes()
attributes.WriteAttributeString("discount", "1.00")
attributes.WriteAttributeString("currency", "USD")
attributes.Close()
navigator.MoveToParent()
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>
A CreateAttribute és CreateAttributes módszerekkel kapcsolatos további információkért tekintse meg az osztály referenciadokumentációját XPathNavigator.
Csomópontok másolása
Bizonyos esetekben előfordulhat, hogy egy XML-dokumentumot egy másik XML-dokumentum tartalmával szeretne feltölteni. Az XPathNavigator osztály és az XmlWriter osztály is másolhat csomópontokat egy XmlDocument objektumba egy meglévő XmlReader objektumból vagy XPathNavigator objektumból.
Az AppendChild, PrependChild, InsertBefore és InsertAfter metódusai a XPathNavigator osztálynak mind túlterheléssel ellátottak, amelyek paraméterként elfogadhatnak egy XPathNavigator objektumot vagy egy XmlReader objektumot.
Az WriteNode osztály metódusa XmlWriter túlterhelésekkel rendelkezik, amelyek elfogadhatnak egy XmlNode, XmlReadervagy XPathNavigator objektumot.
Az alábbi példa az összes elemet átmásolja az book egyik dokumentumból a másikba.
Dim document As XmlDocument = New XmlDocument()
document.Load("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
navigator.MoveToChild("bookstore", String.Empty)
Dim newBooks As XPathDocument = New XPathDocument("newBooks.xml")
Dim newBooksNavigator As XPathNavigator = newBooks.CreateNavigator()
Dim nav As XPathNavigator
For Each nav in newBooksNavigator.SelectDescendants("book", "", false)
navigator.AppendChild(nav)
Next
document.Save("newBooks.xml");
XmlDocument document = new XmlDocument();
document.Load("books.xml");
XPathNavigator navigator = document.CreateNavigator();
navigator.MoveToChild("bookstore", String.Empty);
XPathDocument newBooks = new XPathDocument("newBooks.xml");
XPathNavigator newBooksNavigator = newBooks.CreateNavigator();
foreach (XPathNavigator nav in newBooksNavigator.SelectDescendants("book", "", false))
{
navigator.AppendChild(nav);
}
document.Save("newBooks.xml");
Értékek beszúrása
Az XPathNavigator osztály a SetValue és SetTypedValue metódusokat biztosítja a csomópont értékeinek egy XmlDocument objektumba való beszúrására.
Nem beírt értékek beszúrá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. Az érték típus nélkül vagy anélkül lesz beszúrva, hogy az új érték érvényes-e a csomópont típusának megfelelően, ha rendelkezésre állnak sémainformációk.
Az alábbi példában a SetValue metódust a price fájlban található összes contosoBooks.xml elem frissítésére használjuk.
XmlDocument document = new XmlDocument();
document.Load("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();
XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
manager.AddNamespace("bk", "http://www.contoso.com/books");
foreach (XPathNavigator nav in navigator.Select("//bk:price", manager))
{
if (nav.Value == "11.99")
{
nav.SetValue("12.99");
}
}
Console.WriteLine(navigator.OuterXml);
Dim document As XmlDocument = New XmlDocument()
document.Load("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
Dim manager As XmlNamespaceManager = New XmlNamespaceManager(navigator.NameTable)
manager.AddNamespace("bk", "http://www.contoso.com/books")
For Each nav As XPathNavigator In navigator.Select("//bk:price", manager)
If nav.Value = "11.99" Then
nav.SetValue("12.99")
End If
Next
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>
Beírt értékek beszúrá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.
Az alábbi példa megkísérli a fájl első price elemének book értékét contosoBooks.xml értékre DateTime módosítani. Mivel a price elem XML-sématípusa xs:decimal fájlokban contosoBooks.xsd-ként van definiálva, ez kivételt eredményez.
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(DateTime.Now)
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(DateTime.Now);
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>
A példa a contosoBooks.xsd is bemenetként használja.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="bookstore">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="author">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="first-name" type="xs:string" />
<xs:element minOccurs="0" name="last-name" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="price" type="xs:decimal" />
</xs:sequence>
<xs:attribute name="genre" type="xs:string" use="required" />
<xs:attribute name="publicationdate" type="xs:date" use="required" />
<xs:attribute name="ISBN" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
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 használhatók csomópontok és értékek beszúrására egy XML-dokumentumba. További információ a csomópontok és InnerXml értékek beszúrásához használt OuterXml tulajdonságokról: XML-adatok módosítása XPathNavigator használatával.
Névtér és xml:lang ütközések
Bizonyos ütközések fordulhatnak elő a névtér és a xml:lang deklaráció hatókörével kapcsolatban, amikor XML-adatokat szúr be a InsertBefore osztály InsertAfter, AppendChild, PrependChild és XPathNavigator metódusainak használatával, amelyek XmlReader objektumokat vesznek paraméterként.
A következő lehetséges névtérütközések.
Ha az objektum környezetében van egy névtér hatóköre XmlReader , ahol a névtér URI-leképezésének előtagja nem szerepel az XPathNavigator objektum környezetében, a rendszer új névtérdeklarációt ad hozzá az újonnan beszúrt csomóponthoz.
Ha ugyanaz a névtér URI hatókörön belül van mind a XmlReader objektum, mind a XPathNavigator objektum környezetében, de mindkét környezetben más előtag van hozzárendelve, egy új névtér-deklarációt adunk hozzá az újonnan beszúrt csomóponthoz, amelyben az előtag és a névtér URI a XmlReader objektumból származik.
Ha ugyanaz a névtér előtag mind a XmlReader objektum, mind a XPathNavigator objektum környezetében is hatókörön belül van, de mindkét környezetben más névtér URI van hozzárendelve hozzá, akkor az újonnan beszúrt csomóponthoz hozzáadódik egy új névtér-deklaráció, amely újból deklarálja az előtagot a XmlReader objektumból vett névtér URI-jával.
Ha az előtag és a névtér URI-ja mind az XmlReader objektum, mind az XPathNavigator objektum környezetében megegyezik, akkor a rendszer nem ad hozzá új névtér-deklarációt az újonnan beszúrt csomóponthoz.
Megjegyzés:
A fenti leírás az üres string előtaggal (például az alapértelmezett névtérdeklarációval) rendelkező névtér-deklarációkra is vonatkozik.
A lehetséges xml:lang ütközések a következők.
Ha az
xml:langobjektum környezetében van egy XmlReader hatókörön belüli attribútum, de az objektum környezetében XPathNavigator nem, a rendszer hozzáad egyxml:langattribútumot, amelynek az objektumból vett XmlReader értéke az újonnan beszúrt csomóponthoz kerül.Ha mind az
xml:langobjektum, mind a XmlReader objektum környezetében van egy XPathNavigator attribútum a hatókörön belül, de ezek különböző értékekkel bírnak, akkor az újonnan beszúrt csomóponthoz hozzáadnak egyxml:langattribútumot, amelynek értékét az XmlReader objektumból veszik.Ha mind a
xml:langobjektum, mind a XmlReader objektum környezetében a hatókörön belül van egy XPathNavigator attribútum, és mindkét attribútum ugyanazzal az értékkel rendelkezik, az újonnan beszúrt csomóponthoz nem adódik hozzá újxml:langattribútum.Ha a
xml:langobjektum környezetében van egy XPathNavigator attribútum a hatókörön belül, de a XmlReader objektum környezetében nincs, akkor az újonnan beszúrt csomóponthoz nem adnak hozzáxml:langattribútumot.
Csomópontok beszúrása az XmlWriter használatával
A "Csomópontok és értékek beszúrása" szakaszban leírt testvér-, gyermek- és attribútumcsomópontok beszúrására használt módszerek túlterheltek. Az InsertAfterosztály , InsertBefore, AppendChildPrependChildés CreateAttributes metódusai XPathNavigator a XmlWriter csomópontok beszúrásához használt objektumot ad vissza.
Nem támogatott XmlWriter-metódusok
Az XPath-adatmodell és a dokumentumobjektum-modell (DOM) közötti különbség miatt az XmlWriter osztály nem támogatja az összes olyan metódust, amely adatokat ír egy XML-dokumentumba az osztály használatávalXPathNavigator.
Az alábbi táblázat az XmlWriter osztály által XPathNavigator nem támogatott osztálymódszereket ismerteti.
| Metódus | Leírás |
|---|---|
| WriteEntityRef | Dob egy NotSupportedException kivételt. |
| WriteDocType | A gyökérszinten figyelmen kívül hagyva, és kivételt NotSupportedException okoz, ha az XML-dokumentum bármely más szintjén meghívják. |
| WriteCData | Úgy kezelendő, mint egy hívás a WriteString metódusnak a megfelelő karakter vagy karakterek tekintetében. |
| WriteCharEntity | Úgy kezelendő, mint egy hívás a WriteString metódusnak a megfelelő karakter vagy karakterek tekintetében. |
| WriteSurrogateCharEntity | Úgy kezelendő, mint egy hívás a WriteString metódusnak a megfelelő karakter vagy karakterek tekintetében. |
A XmlWriter osztályról további információt az XmlWriter osztály referenciadokumentációjában talál.
Több XmlWriter-objektum
Lehetséges, hogy több XPathNavigator objektum mutat egy XML-dokumentum különböző részeire, miközben egy vagy több XmlWriter objektum van megnyitva. Egyszálas forgatókönyvekben több XmlWriter objektum is engedélyezett és támogatott.
Az alábbiakban fontos megjegyzéseket érdemes figyelembe venni több XmlWriter objektum használatakor.
Az objektumok által XmlWriter írt XML-töredékeket a rendszer hozzáadja az XML-dokumentumhoz az Close egyes XmlWriter objektumok metódusának meghívásakor. Addig a pontig az XmlWriter objektum egy leválasztott töredéket ír. Ha az XML-dokumentumon műveletet hajtanak végre, az objektum által XmlWriter írt töredékeket a rendszer a Close meghívás előtt nem érinti.
Ha egy adott XML-altartományon van egy nyitott XmlWriter objektum, és az altartomány törlődik, az XmlWriter objektum továbbra is hozzáadhat az altartományhoz. A részfa egyszerűen törölt töredék lesz.
Ha az XML-dokumentum ugyanazon pontján több XmlWriter objektum is meg van nyitva, azokat a rendszer abban a sorrendben ad hozzá az XML-dokumentumhoz, amelyben az XmlWriter objektumokat bezárták, és nem abban a sorrendben, amelyben megnyitották őket.
Az alábbi példa létrehoz egy XmlDocument objektumot, létrehoz egy XPathNavigator objektumot, majd a XmlWriterPrependChild metódus által visszaadott objektummal hozza létre a fájl első könyvének books.xml szerkezetét. A példa ezután book.xml fájlként menti.
Dim document As XmlDocument = New XmlDocument()
Dim navigator As XPathNavigator = document.CreateNavigator()
Using writer As XmlWriter = navigator.PrependChild()
writer.WriteStartElement("bookstore")
writer.WriteStartElement("book")
writer.WriteAttributeString("genre", "autobiography")
writer.WriteAttributeString("publicationdate", "1981-03-22")
writer.WriteAttributeString("ISBN", "1-861003-11-0")
writer.WriteElementString("title", "The Autobiography of Benjamin Franklin")
writer.WriteStartElement("author")
writer.WriteElementString("first-name", "Benjamin")
writer.WriteElementString("last-name", "Franklin")
writer.WriteElementString("price", "8.99")
writer.WriteEndElement()
writer.WriteEndElement()
writer.WriteEndElement()
End Using
document.Save("book.xml")
XmlDocument document = new XmlDocument();
XPathNavigator navigator = document.CreateNavigator();
using (XmlWriter writer = navigator.PrependChild())
{
writer.WriteStartElement("bookstore");
writer.WriteStartElement("book");
writer.WriteAttributeString("genre", "autobiography");
writer.WriteAttributeString("publicationdate", "1981-03-22");
writer.WriteAttributeString("ISBN", "1-861003-11-0");
writer.WriteElementString("title", "The Autobiography of Benjamin Franklin");
writer.WriteStartElement("author");
writer.WriteElementString("first-name", "Benjamin");
writer.WriteElementString("last-name", "Franklin");
writer.WriteElementString("price", "8.99");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
}
document.Save("book.xml");
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.