Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
In dit artikel vindt u aanvullende opmerkingen in de referentiedocumentatie voor deze API.
De XmlTextWriter klasse implementeert de XmlWriter klasse.
Opmerking
U wordt aangeraden om XmlWriter-exemplaren te maken met behulp van de XmlWriter.Create-methode en de XmlWriterSettings-klasse om te profiteren van nieuwe functionaliteit.
XmlTextWriter onderhoudt een naamruimtestack die overeenkomt met alle naamruimten die zijn gedefinieerd in de huidige elementstack. U kunt XmlTextWriter naamruimten handmatig declareren.
w.WriteStartElement("root");
w.WriteAttributeString("xmlns", "x", null, "urn:1");
w.WriteStartElement("item","urn:1");
w.WriteEndElement();
w.WriteStartElement("item","urn:1");
w.WriteEndElement();
w.WriteEndElement();
De bovenstaande C#-code produceert de volgende uitvoer.
XmlTextWriter bevordert de naamruimtedeclaratie naar het hoofdelement om te voorkomen dat deze wordt gedupliceerd op de twee onderliggende elementen. De kind-elementen halen het voorvoegsel op uit de naamruimteverklaring.
<root xmlns:x="urn:1">
<x:item/>
<x:item/>
</x:root>
XmlTextWriter U kunt ook de huidige naamruimtedeclaratie overschrijven. In het volgende voorbeeld wordt de naamruimte-URI '123' overschreven door 'abc' om het XML-element <x:node xmlns:x="abc"/>te produceren.
w.WriteStartElement("x","node","123");
w.WriteAttributeString("xmlns","x",null,"abc");
Met behulp van de schrijfmethoden die een voorvoegsel als argument gebruiken, kunt u ook opgeven welk voorvoegsel moet worden gebruikt. In het volgende voorbeeld worden twee verschillende voorvoegsels toegewezen aan dezelfde naamruimte-URI om de XML-tekst <x:root xmlns:x="urn:1"><y:item xmlns:y="urn:1"/></x:root>te produceren.
XmlTextWriter w = new XmlTextWriter(Console.Out);
w.WriteStartElement("x","root","urn:1");
w.WriteStartElement("y","item","urn:1");
w.WriteEndElement();
w.WriteEndElement();
w.Close();
Als er meerdere naamruimtedeclaraties zijn die verschillende voorvoegsels toewijzen aan dezelfde naamruimte-URI, XmlTextWriter leidt u de stapel naamruimtedeclaraties achteruit en kiest u het dichtstbijzijnde.
XmlTextWriter w = new XmlTextWriter(Console.Out);
w.Formatting = Formatting.Indented;
w.WriteStartElement("x","root","urn:1");
w.WriteStartElement("y","item","urn:1");
w.WriteAttributeString("attr","urn:1","123");
w.WriteEndElement();
w.WriteEndElement();
w.Close();
In het bovenstaande C#-voorbeeld, omdat de WriteAttributeString aanroep geen voorvoegsel opgeeft, gebruikt de schrijver het laatste voorvoegsel dat naar de naamruimtestack wordt gepusht en produceert de volgende XML:
<x:root xmlns:x="urn:1">
<y:item y:attr="123" xmlns:y="urn:1" />
</x:root>
Als er naamruimteconflicten optreden, XmlTextWriter lost u deze op door alternatieve voorvoegsels te genereren. Als een kenmerk en element bijvoorbeeld hetzelfde voorvoegsel hebben, maar verschillende naamruimten, XmlWriter genereert u een alternatief voorvoegsel voor het kenmerk. De gegenereerde voorvoegsels hebben een naam n{i} waarbij i een getal begint bij 1. Het getal wordt opnieuw ingesteld op 1 voor elk element.
Kenmerken die zijn gekoppeld aan een naamruimte-URI moeten een voorvoegsel hebben (standaardnaamruimten zijn niet van toepassing op kenmerken). Dit voldoet aan sectie 5.2 van de W3C-naamruimten in de XML-aanbeveling. Als een kenmerk VERWIJST naar een naamruimte-URI, maar geen voorvoegsel opgeeft, genereert de schrijver een voorvoegsel voor het kenmerk.
Bij het schrijven van een leeg element wordt bijvoorbeeld een extra ruimte toegevoegd tussen de tagnaam en de afsluitende tag <item />. Dit biedt compatibiliteit met oudere browsers.
Wanneer een String wordt gebruikt als methodeparameter, zijn null en String.Empty gelijkwaardig.
String.Empty volgt de W3C-regels.
Als u sterk getypte gegevens wilt schrijven, gebruikt u de XmlConvert klasse om gegevenstypen te converteren naar een tekenreeks. Met de volgende C#-code worden bijvoorbeeld de gegevens geconverteerd van Double naar String en het element <price>19.95</price> geschreven.
Double price = 19.95;
writer.WriteElementString("price", XmlConvert.ToString(price));
XmlTextWriter controleert niet op het volgende:
- Ongeldige tekens in kenmerk- en elementnamen.
- Unicode-tekens die niet passen bij de opgegeven codering. Als de Unicode-tekens niet passen bij de opgegeven codering, ontsnappen de
XmlTextWriterUnicode-tekens niet aan tekenentiteiten. - Dubbele kenmerken.
- Tekens in de openbare DOCTYPE-id of systeem-id.
Beveiligingsoverwegingen
De volgende items zijn zaken waarmee u rekening moet houden bij het werken met de XmlTextWriter klasse.
Uitzonderingen die door XmlTextWriter worden gegenereerd, kunnen padinformatie vrijgeven die niet mag worden meegedeeld aan de toepassing. Uw toepassingen moeten uitzonderingen ondervangen en ze op de juiste manier verwerken.
Wanneer u de XmlTextWriter toepassing doorgeeft aan een andere toepassing, wordt de onderliggende stream blootgesteld aan die toepassing. Als u de XmlTextWriter moet doorgeven aan een semi-vertrouwde toepassing, gebruik dan een XmlWriter-object dat is gemaakt met de Create-methode.
XmlTextWriter valideert geen gegevens die worden doorgegeven aan de WriteDocType of WriteRaw methoden. U mag geen willekeurige gegevens doorgeven aan deze methoden.
Als de standaardinstellingen worden gewijzigd, is er geen garantie dat de gegenereerde uitvoer goed opgemaakte XML-gegevens is.
Accepteer geen ondersteunende onderdelen, zoals een Encoding object, van een niet-vertrouwde bron.