Sdílet prostřednictvím


System.Xml.XmlTextReader – třída

Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.

Poznámka:

Doporučujeme vytvářet XmlReader instance pomocí XmlReader.Create metody, abyste mohli využívat nové funkce.

XmlTextReader poskytuje přístup jen pro čtení ke streamu dat XML. Aktuální uzel odkazuje na uzel, na kterém je čtenář umístěn. Čtenář je posunut pomocí některé z metod čtení a vlastnosti odrážejí hodnotu aktuálního uzlu.

Tato třída implementuje XmlReader a odpovídá doporučení W3C Extensible Markup Language (XML) 1.0 a doporučení Namespaces in XML. XmlTextReader poskytuje následující funkce:

  • Vynucuje pravidla pro správně strukturované XML.

  • XmlTextReader neposkytuje ověření dat.

  • Kontroluje, že DocumentType uzly jsou správně vytvořené. XmlTextReader zkontroluje DTD pro správnou syntaxi, ale neprovádí validaci pomocí DTD.

  • Pro uzly, kde je NodeTypeXmlNodeType.EntityReference, je vrácen jeden prázdný EntityReference uzel (to znamená, že vlastnost Value je String.Empty).

Poznámka:

Skutečné deklarace entit v DTD se nazývají Entity uzly. Když odkazujete na tyto uzly ve vašich datech, označují se jako EntityReference uzly.

  • Nerozbaluje výchozí atributy.

Vzhledem k tomu, že XmlTextReader neprovádí dodatečné kontroly potřebné pro ověření dat, poskytuje rychlý parser pro dobře formátované dokumenty.

K ověření dat použijte validační XmlReader.

Chcete-li číst data XML z aplikace XmlDocument, použijte XmlNodeReader.

XmlTextReader vyvolá XmlException při chybách analýzy XML. Po vyvolání výjimky není stav čtečky předvídatelný. Například hlášený typ uzlu se může lišit od skutečného typu uzlu aktuálního uzlu. ReadState Pomocí vlastnosti zkontrolujte, jestli je čtenář v chybovém stavu.

Bezpečnostní aspekty

Při používání XmlTextReader třídy je potřeba vzít v úvahu následující skutečnosti.

  • Výjimky vyvolané XmlTextReader mohou odhalit informace o cestě, které nechcete, aby se propagovaly do aplikace. Vaše aplikace musí zachytit výjimky a odpovídajícím způsobem je zpracovat.

  • Zpracování DTD je ve výchozím nastavení povolené. Zakažte zpracování DTD, pokud máte obavy o problémy s odepřením služeb nebo pokud pracujete s nedůvěryhodnými zdroji. Nastavte vlastnost DtdProcessing na Prohibit, aby se zakázalo zpracování DTD.

    Pokud máte povolené zpracování DTD, můžete použít XmlSecureResolver omezení prostředků, ke kterým XmlTextReader má přístup. Můžete také navrhnout aplikaci tak, aby zpracování XML bylo paměť a čas omezené. Například můžete nakonfigurovat časové limity ve své aplikaci ASP.NET.

  • Data XML můžou obsahovat odkazy na externí prostředky, jako je soubor DTD. Ve výchozím nastavení jsou externí prostředky řešeny pomocí objektu XmlUrlResolver bez přihlašovacích údajů uživatele. Můžete to dále zabezpečit jedním z následujících způsobů:

  • Data XML můžou obsahovat velký počet atributů, deklarací oboru názvů, vnořených elementů atd., které vyžadují značné množství času ke zpracování. Chcete-li omezit velikost vstupu, který je odeslán do XmlTextReader, vytvořte vlastní implementaci IStream a předejte mu XmlTextReader.

  • Metodu ReadValueChunk lze použít ke zpracování velkých datových proudů. Tato metoda čte malý počet znaků v jeden okamžik místo přidělení jednoho řetězce pro kompletní hodnotu.

  • Ve výchozím nastavení nejsou obecné entity rozšířeny. Obecné entity se při volání ResolveEntity metody rozbalí.