System.Xml.XmlTextReader, klasa
Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.
Uwaga
Zalecamy utworzenie XmlReader wystąpień przy użyciu metody , XmlReader.Create aby korzystać z nowych funkcji.
XmlTextReader zapewnia dostęp tylko do odczytu tylko do odczytu do strumienia danych XML. Bieżący węzeł odwołuje się do węzła, w którym znajduje się czytnik. Czytelnik jest zaawansowany przy użyciu dowolnej z metod odczytu i właściwości odzwierciedla wartość bieżącego węzła.
Ta klasa implementuje XmlReader i jest zgodna z zaleceniami języka W3C Extensible Markup Language (XML) 1.0 i przestrzeniami nazw w zaleceniach XML. XmlTextReader
Udostępnia następujące funkcje:
Wymusza reguły poprawnie sformułowanego kodu XML.
XmlTextReader
nie zapewnia weryfikacji danych.Sprawdza, czy
DocumentType
węzły są prawidłowo sformułowane.XmlTextReader
sprawdza prawidłowo sformułowanie dtD, ale nie sprawdza poprawności przy użyciu dtD.W przypadku węzłów, w których NodeType jest , zwracany jest jeden pusty
EntityReference
węzeł (czyli Value właściwość toString.Empty
XmlNodeType.EntityReference
).
Uwaga
Rzeczywiste deklaracje jednostek w dtD są nazywane Entity
węzłami. W przypadku odwoływania się do tych węzłów w danych są one nazywane EntityReference
węzłami.
- Nie rozwija atrybutów domyślnych.
XmlTextReader
Ponieważ narzędzie nie wykonuje dodatkowych testów wymaganych do weryfikacji danych, zapewnia szybki analizator prawidłowo sformułowań.
Aby przeprowadzić walidację danych, użyj walidacji XmlReader.
Aby odczytać dane XML z elementu XmlDocument, użyj polecenia XmlNodeReader.
XmlTextReader
zgłasza błędy XmlException analizy XML. Po wystąpieniu wyjątku stan czytnika nie jest przewidywalny. Na przykład zgłoszony typ węzła może być inny niż rzeczywisty typ węzła bieżącego węzła. Użyj właściwości , ReadState aby sprawdzić, czy czytnik jest w stanie błędu.
Zagadnienia dotyczące zabezpieczeń
Poniżej przedstawiono kwestie, które należy wziąć pod uwagę podczas korzystania z XmlTextReader klasy .
XmlTextReader Zgłoszone wyjątki mogą ujawniać informacje o ścieżce, które nie mają być przekazywane do aplikacji. Aplikacje muszą przechwytywać wyjątki i przetwarzać je odpowiednio.
Przetwarzanie DTD jest domyślnie włączone. Wyłącz przetwarzanie DTD, jeśli martwisz się o problemy z odmową usługi lub jeśli masz do czynienia z niezaufanymi źródłami. Ustaw właściwość na DtdProcessing wartość , aby Prohibit wyłączyć przetwarzanie DTD.
Jeśli masz włączone przetwarzanie DTD, możesz użyć polecenia XmlSecureResolver , aby ograniczyć zasoby, do których XmlTextReader można uzyskać dostęp. Aplikację można również zaprojektować tak, aby przetwarzanie XML było ograniczone pamięci i czasu. Na przykład skonfiguruj limity czasu w aplikacji ASP.NET.
Dane XML mogą zawierać odwołania do zasobów zewnętrznych, takich jak plik DTD. Domyślnie zasoby zewnętrzne są rozwiązywane przy użyciu XmlUrlResolver obiektu bez poświadczeń użytkownika. Możesz to dodatkowo zabezpieczyć, wykonując jedną z następujących czynności:
Ogranicz zasoby, do których XmlTextReader może uzyskiwać dostęp, ustawiając XmlResolver właściwość na XmlSecureResolver obiekt.
Nie zezwalaj XmlReader na otwieranie żadnych zasobów zewnętrznych przez ustawienie XmlResolver właściwości na
null
.
Dane XML mogą zawierać dużą liczbę atrybutów, deklaracji przestrzeni nazw, zagnieżdżonych elementów itd., które wymagają znacznego czasu na przetworzenie. Aby ograniczyć rozmiar danych wejściowych wysyłanych do XmlTextReaderelementu , utwórz niestandardową implementację IStream i podaj ją jako XmlTextReader.
Metoda ReadValueChunk może służyć do obsługi dużych strumieni danych. Ta metoda odczytuje niewielką liczbę znaków jednocześnie zamiast przydzielać jeden ciąg dla całej wartości.
Domyślnie jednostki ogólne nie są rozszerzane. Jednostki ogólne są rozszerzane podczas wywoływania ResolveEntity metody .