Udostępnij za pośrednictwem


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ść to String.EmptyXmlNodeType.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:

  • 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 .