Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
XmlTextReadertillhandahåller inte dataverifiering.Kontrollerar att
DocumentTypenoder är välformulerade.XmlTextReaderkontrollerar DTD för välformulering, men validerar inte med hjälp av DTD.För noder där NodeType är
XmlNodeType.EntityReferencereturneras en enda tomEntityReferencenod (det vill sägs att egenskapen Value ärString.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:
Begränsa resurserna som XmlTextReader kan få tillgång till genom att ställa in XmlResolver-egenskapen till ett XmlSecureResolver-objekt.
Tillåt inte XmlReader att externa resurser öppnas genom att ange egenskapen XmlResolver till
null.
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.