Sdílet prostřednictvím


Metody System.Xml.XmlReader.Create

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

Většina Create přetížení zahrnuje parametr settings, který přijímá objekt XmlReaderSettings. Tento objekt můžete použít k:

  • Určete, které funkce chcete u objektu XmlReader podporovat.
  • Znovu použijte XmlReaderSettings objekt k vytvoření více čteček. Stejná nastavení můžete použít k vytvoření více čtenářů se stejnou funkcí. Nebo můžete upravit nastavení XmlReaderSettings instance a vytvořit novou čtečku s jinou sadou funkcí.
  • Přidání funkcí do existující čtečky XML Metoda Create může přijmout jiný XmlReader objekt. Základní XmlReader objekt může být uživatelem definovaný čtenář, XmlTextReader objekt nebo jiná XmlReader instance, do které chcete přidat další funkce.
  • Využijte plnou výhodu funkcí, jako je lepší kontrola shody a dodržování předpisů doporučení XML 1.0 (čtvrté edice), které jsou k dispozici pouze u XmlReader objektů vytvořených statickou Create metodou.

Poznámka:

I když .NET zahrnuje konkrétní implementace XmlReader třídy, například XmlTextReader, XmlNodeReadera XmlValidatingReader třídy, doporučujeme vytvořit XmlReader instance pomocí Create metody.

Výchozí nastavení

Pokud použijete Create přetížení, které nepřijímá objekt XmlReaderSettings, použijí se následující výchozí nastavení čtečky.

Nastavení Výchozí
CheckCharacters true
ConformanceLevel ConformanceLevel.Document
IgnoreComments false
IgnoreProcessingInstructions false
IgnoreWhitespace false
LineNumberOffset 0
LinePositionOffset 0
NameTable null
DtdProcessing Prohibit
Schemas Prázdný XmlSchemaSet objekt
ValidationFlags ProcessIdentityConstraints povolený
ValidationType None
XmlResolver null

Nastavení pro běžné scénáře

Tady jsou XmlReaderSettings vlastnosti, které byste měli nastavit pro některé typické scénáře čtečky XML.

Požadavek Nastavit
Data musí být dokument XML ve správném formátu. ConformanceLevel na Document.
Data musí být dobře utvořená a parsovaná entita XML. ConformanceLevel na Fragment.
Data musí být ověřena proti DTD. DtdProcessing na Parse
ValidationType na DTD.
Data musí být ověřena proti schématu XML. ValidationType na Schema
Schemas na XmlSchemaSet k použití pro ověření. Upozorňujeme, že XmlReader nepodporuje XML-Data omezené ověřování schématu (XDR).
Data musí být ověřeno podle vnořeného XML schématu. ValidationType na Schema
ValidationFlags na ProcessInlineSchema.
Podpora typů ValidationType na Schema
Schemas k XmlSchemaSet k použití.

XmlReader nepodporuje XML-Data omezené ověřování schématu (XDR).

Asynchronní programování

V synchronním režimu Create metoda čte první blok dat z vyrovnávací paměti souboru, streamu nebo čtečky textu. Pokud dojde k selhání vstupně-výstupní operace, může dojít k výjimce. V asynchronním režimu dochází k první vstupně-výstupní operaci prostřednictvím operace čtení, takže výjimky, které nastanou, budou vyvolány v okamžiku této operace čtení.

Bezpečnostní aspekty

Ve výchozím nastavení používá XmlReader k otevírání prostředků XmlUrlResolver objekt bez přihlašovacích údajů uživatele. To znamená, že ve výchozím nastavení má čtenář XML přístup k libovolnému umístění, které nevyžaduje přihlašovací údaje. XmlResolver Pomocí vlastnosti můžete řídit přístup k prostředkům:

  • Nastavte XmlResolver na objekt, XmlSecureResolver který omezí prostředky, ke kterým má čtenář XML přístup, nebo...
  • Nastaví XmlResolver se tak, aby null čtečka XML nemohla otevírat externí prostředky.

Příklady

Tento příklad vytvoří čtečku XML, která odstraní nevýznamné prázdné znaky, odstraní komentáře a provede kontrolu shody na úrovni fragmentu.

XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("books.xml", settings);
Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.IgnoreWhitespace = true
settings.IgnoreComments = true
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)

Následující příklad používá výchozí přihlašovací údaje pro přístup k souboru pomocí XmlUrlResolver.

// Set the reader settings.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
settings.IgnoreProcessingInstructions = true;
settings.IgnoreWhitespace = true;
' Set the reader settings.
Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.IgnoreComments = true
settings.IgnoreProcessingInstructions = true
settings.IgnoreWhitespace = true
// Create a resolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Set the reader settings object to use the resolver.
settings.XmlResolver = resolver;

// Create the XmlReader object.
XmlReader reader = XmlReader.Create("http://ServerName/data/books.xml", settings);
' Create a resolver with default credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials

' Set the reader settings object to use the resolver.
settings.XmlResolver = resolver

' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("http://ServerName/data/books.xml", settings)

Následující kód zabalí instanci čtenáře do jiného čtenáře.

XmlTextReader txtReader = new XmlTextReader("bookOrder.xml");
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("urn:po-schema", "PO.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create(txtReader, settings);
Dim txtReader As XmlTextReader = New XmlTextReader("bookOrder.xml")
Dim settings As New XmlReaderSettings()
settings.Schemas.Add("urn:po-schema", "PO.xsd")
settings.ValidationType = ValidationType.Schema
Dim reader As XmlReader = XmlReader.Create(txtReader, settings)

Tento příklad instruuje čtenáře, aby přidali ověření schématu DTD a XML.

XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.DTD;
XmlReader inner = XmlReader.Create("book.xml", settings); // DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader outer = XmlReader.Create(inner, settings);  // XML Schema Validation
Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.DTD
Dim inner As XmlReader = XmlReader.Create("book.xml", settings) ' DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd")
settings.ValidationType = ValidationType.Schema
Dim outer As XmlReader = XmlReader.Create(inner, settings)  ' XML Schema Validation