Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.
Třída XmlTextWriter implementuje XmlWriter třídu.
Poznámka:
Doporučujeme vytvářet XmlWriter instance pomocí XmlWriter.Create metody a XmlWriterSettings třídy, abyste mohli využívat nové funkce.
XmlTextWriter udržuje zásobník oborů názvů, který odpovídá všem oborům názvů definovaným v aktuálním zásobníku prvků. Pomocí XmlTextWriter můžete obory názvů deklarovat ručně.
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();
Výše uvedený kód jazyka C# vytvoří následující výstup.
XmlTextWriter propaguje deklaraci oboru názvů na kořenový prvek, aby se předešlo jejímu duplikování na dvou podřízených prvcích. Podřízené prvky přebírají předponu z deklarace oboru názvů.
<root xmlns:x="urn:1">
<x:item/>
<x:item/>
</x:root>
XmlTextWriter umožňuje také přepsat aktuální deklaraci oboru názvů. V následujícím příkladu je identifikátor URI oboru názvů 123 přepsán "abc" k vytvoření elementu <x:node xmlns:x="abc"/>XML .
w.WriteStartElement("x","node","123");
w.WriteAttributeString("xmlns","x",null,"abc");
Pomocí metod zápisu, které přebírají předponu jako argument, můžete také určit, kterou předponu použít. V následujícím příkladu se namapují dvě různé předpony na stejný URI oboru názvů, aby se vytvořil XML text <x:root xmlns:x="urn:1"><y:item xmlns:y="urn:1"/></x:root>.
XmlTextWriter w = new XmlTextWriter(Console.Out);
w.WriteStartElement("x","root","urn:1");
w.WriteStartElement("y","item","urn:1");
w.WriteEndElement();
w.WriteEndElement();
w.Close();
Pokud existuje více deklarací oboru názvů, které mapují různé předpony na stejný identifikátor URI oboru názvů, XmlTextWriter prohledává zásobník deklarací oboru názvů odzadu a vybere tu nejbližší deklaraci.
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();
Ve výše uvedeném příkladu jazyka C# použije zapisovatel poslední předponu vloženou do zásobníku oboru názvů, protože volání WriteAttributeString neurčí předponu, a vytvoří následující XML:
<x:root xmlns:x="urn:1">
<y:item y:attr="123" xmlns:y="urn:1" />
</x:root>
Pokud dojde ke konfliktům oboru názvů, XmlTextWriter je vyřeší generováním alternativních předpon. Pokud například atribut a element mají stejnou předponu, ale různé obory názvů, XmlWriter vygeneruje alternativní předponu atributu. Vygenerované předpony jsou pojmenovány n{i} , kde i je číslo začínající na 1. Číslo se pro každý prvek resetuje na 1.
Atributy přidružené k identifikátoru URI oboru názvů musí mít předponu (výchozí obory názvů se nevztahují na atributy). To odpovídá části 5.2 doporučení W3C o názvových prostorech v XML. Pokud atribut odkazuje na identifikátor URI oboru názvů, ale nezadá předponu, zapisovač vygeneruje předponu atributu.
Při psaní prázdného prvku se mezi název značky a koncovou značku přidá další mezera, například <item />. To zajišťuje kompatibilitu se staršími prohlížeči.
Když je String používán jako parametr metody, null a String.Empty jsou ekvivalentní.
String.Empty se řídí pravidly W3C.
Chcete-li zapisovat data v silném typovém systému, použijte třídu XmlConvert k převodu datových typů na řetězce. Například následující kód jazyka C# převede data z Double do String a zapíše element <price>19.95</price>.
Double price = 19.95;
writer.WriteElementString("price", XmlConvert.ToString(price));
XmlTextWriter nekontroluje následující:
- Neplatné znaky v názvech atributů a elementů
- Znaky Unicode, které neodpovídají zadanému kódování. Pokud se znaky Unicode nevejdou do zadaného kódování,
XmlTextWriternepřevede znaky Unicode na entity znaků. - Duplicitní atributy
- Znaky ve veřejném identifikátoru DOCTYPE nebo systémovém identifikátoru.
Bezpečnostní aspekty
Při práci s XmlTextWriter třídou je potřeba vzít v úvahu následující položky.
Výjimky vyvolané XmlTextWriter můžou odhalit informace o cestě, které nechcete bublinovat až do aplikace. Vaše aplikace musí zachytit výjimky a odpovídajícím způsobem je zpracovat.
Když předáte XmlTextWriter jiné aplikaci, podkladní datový proud je té aplikaci zpřístupněn. Pokud potřebujete předat XmlTextWriter částečně důvěryhodné aplikaci, měli byste použít objekt XmlWriter, vytvořený metodou Create.
Neověřuje XmlTextWriter žádná data, která jsou předána metodám WriteDocType nebo WriteRaw metodám. Těmto metodám byste neměli předávat libovolná data.
Pokud se výchozí nastavení změní, není zaručeno, že vygenerovaný výstup je správně formátovaná data XML.
Nepřijímejte podpůrné komponenty, jako například objekt Encoding, z nedůvěryhodného zdroje.