Dela via


System.Xml.XmlTextReader-klass

Anmärkning

Den här artikeln innehåller ytterligare kommentarer till referensdokumentationen för det här API:et.

Anmärkning

Vi rekommenderar att du skapar XmlReader instanser genom att använda XmlReader.Create metoden för att dra nytta av nya funktioner.

XmlTextReader ger endast skrivskyddad åtkomst framåt till en dataström med XML-data. Den aktuella noden refererar till den nod där läsaren är placerad. Läsaren förflyttas med någon av de tillgängliga läsmetoderna, där egenskaperna återspeglar värdet för den aktuella noden.

Den här klassen implementerar XmlReader och överensstämmer med W3C Extensible Markup Language (XML) 1.0 och namnrymderna i XML-rekommendationer. XmlTextReader innehåller följande funktioner:

  • Tillämpar reglerna för välformulerad XML.

  • XmlTextReader tillhandahåller inte dataverifiering.

  • Kontrollerar att DocumentType noder är välformulerade. XmlTextReader kontrollerar DTD för välformulering, men validerar inte med hjälp av DTD.

  • För noder där NodeType är XmlNodeType.EntityReferencereturneras en enda tom EntityReference nod (det vill sägs att egenskapen Value är String.Empty).

Anmärkning

De faktiska deklarationerna av entiteter i DTD kallas Entity noder. När du refererar till dessa noder i dina data kallas de EntityReference-noder.

  • Expanderar inte standardattribut.

XmlTextReader Eftersom den inte utför de extra kontroller som krävs för dataverifiering, ger den en snabb välformulerad parser.

Om du vill utföra dataverifiering använder du en validering XmlReader.

Om du vill läsa XML-data från en XmlDocumentanvänder du XmlNodeReader.

XmlTextReader kastar ett XmlException vid XML-parsningsfel. När ett undantag har kastats är läsarens tillstånd inte förutsägbart. Den rapporterade nodtypen kan till exempel skilja sig från den aktuella nodens faktiska nodtyp. Använd egenskapen ReadState för att kontrollera om en läsare är i feltillstånd.

Säkerhetsfrågor

Följande är saker att tänka på när du använder XmlTextReader klassen.

  • Undantag som genereras XmlTextReader kan läcka sökvägsinformation som du inte vill ska spridas till applikationen. Dina program måste fånga undantag och bearbeta dem på rätt sätt.

  • DTD-bearbetning är aktiverat som standard. Inaktivera DTD-bearbetning om du är orolig för Denial of Service-problem eller om du har att göra med ej betrodda källor. Ange egenskapen DtdProcessing till Prohibit för att inaktivera DTD-bearbetning.

    Om du har aktiverat DTD-bearbetning kan du använda XmlSecureResolver för att begränsa de resurser som XmlTextReader kan komma åt. Du kan också utforma ditt program så att XML-bearbetningen är minnes- och tidsbegränsad. Du kan till exempel konfigurera tidsgränser i ditt ASP.NET program.

  • XML-data kan innehålla referenser till externa resurser, till exempel en DTD-fil. Som standard löses externa resurser med hjälp av XmlUrlResolver objekt utan användarkredentialer. Du kan skydda detta ytterligare genom att göra något av följande:

  • XML-data kan innehålla ett stort antal attribut, namnområdesdeklarationer, kapslade element och så vidare som kräver mycket tid att bearbeta. Om du vill begränsa storleken på indata som skickas till XmlTextReaderskapar du en anpassad IStream-implementering och anger den XmlTextReader.

  • Metoden ReadValueChunk kan användas för att hantera stora dataströmmar. Den här metoden läser ett litet antal tecken i taget i stället för att allokera en enda sträng för hela värdet.

  • Som standard expanderas inte allmänna entiteter. Allmänna entiteter expanderas när du anropar ResolveEntity metoden.