Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.
Uwaga / Notatka
Zalecamy utworzenie wystąpień XmlReader przy użyciu metody XmlReader.Create, aby korzystać z nowych funkcji.
XmlTextReader zapewnia jednokierunkowy, tylko do odczytu dostęp do strumienia danych XML. Bieżący węzeł odnosi się do węzła, przy którym znajduje się odczytywacz. Czytelnik posuwa się do przodu przy użyciu dowolnej z metod odczytu, a właściwości odzwierciedlają wartość aktualnego węzła.
Ta klasa implementuje XmlReader i jest zgodna z zaleceniami W3C Extensible Markup Language (XML) 1.0 oraz zaleceniami dotyczącymi przestrzeni nazw w XML.
XmlTextReader Udostępnia następujące funkcje:
Wymusza reguły poprawnie sformułowanego kodu XML.
XmlTextReadernie zapewnia weryfikacji danych.Sprawdza, czy
DocumentTypewęzły są prawidłowo sformułowane.XmlTextReadersprawdza poprawność konstrukcji DTD, ale nie waliduje przy użyciu DTD.W przypadku węzłów, w których NodeType jest
XmlNodeType.EntityReference, zwracany jest jeden pusty węzełEntityReference(czyli właściwość Value toString.Empty).
Uwaga / Notatka
Rzeczywiste deklaracje encji w DTD są nazywane węzłami Entity. 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 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 .
Wyjątki rzucane przez XmlTextReader 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ść DtdProcessing na Prohibit, aby 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. Można również zaprojektować aplikację tak, aby przetwarzanie XML miało ograniczenia w zakresie zużycia 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 za pomocą obiektu XmlUrlResolver, który nie zawiera 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 właściwość XmlResolver jako 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 elementu XmlTextReader, utwórz niestandardową implementację IStream i przekaż mu 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 metody ResolveEntity.