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.

Create Většina přetížení zahrnuje settings parametr, který přijímá XmlReaderSettings objekt. 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é objekt nepřijímá 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 Povoleno
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 do Document.
Data musí být správně formátovaná entita XML. ConformanceLevel do Fragment.
Data musí být ověřena proti DTD. DtdProcessing na Parse
ValidationType do DTD.
Data musí být ověřena proti schématu XML. ValidationType na Schema
SchemasXmlSchemaSet pro ověření. Upozorňujeme, že XmlReader nepodporuje ověřování schématu XDR (XML-Data Reduced).
Data musí být ověřena na vložené schématu XML. ValidationType na Schema
ValidationFlags do ProcessInlineSchema.
Podpora typů ValidationType na Schema
SchemasXmlSchemaSet pro použití.

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

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 nastane první vstupně-výstupní operace s operací čtení, takže výjimky, ke kterým dojde při operaci čtení, budou vyvolány výjimky.

Bezpečnostní aspekty

Ve výchozím nastavení XmlReader se k otevírání prostředků používá 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á pro XmlUrlResolver přístup k souboru výchozí přihlašovací údaje.

// 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 zřetědí čtenáře a přidá 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