Das ValidationType-Attribut legt den Validierungstyp fest, der sein kann: DTD, XSD, XDR oder keiner. Wenn kein Validierungstyp angegeben ist (mit der Option ValidationType.Auto), verwendet der Browser automatisch den am besten geeigneten Validierungstyp basierend auf dem Dokument. Jeder während des Validierungsprozesses auftretende Fehler löst das ValidationEventHandler-Ereignis aus. Wenn der Ereignishandler „ValidationEventHandler“ nicht bereitgestellt wird, wird eine XML-Ausnahme ausgelöst. Das Definieren eines ValidationEventHandler-Ereignishandlers ist eine Möglichkeit, alle XML-Ausnahmen abzufangen, die durch Fehler in der XML-Quelldatei verursacht werden. Es ist wichtig zu beachten, dass die Philosophie des Browsers darin besteht, zu überprüfen, ob ein Dokument wohlgeformt ist und dem Schema entspricht. Wenn ein validierter Browser ein XML-Dokument mit schwerwiegenden Formatfehlern findet, löst er nur eine XmlException und keine anderen Ereignisse aus.
Die Validierung erfolgt, wenn der Benutzer den Zeiger mit der Read-Methode vorwärts bewegt. Sobald der Knoten analysiert und gelesen wurde, wird ihm das interne Objekt übergeben, das die Validierung übernimmt. Die Authentifizierungssteuerung basiert auf dem Knotentyp und der Art der angeforderten Authentifizierung. Es bestätigt, ob alle Attribute des Knotens und der im Knoten enthaltenen untergeordneten Knoten die Überprüfungsbedingungen erfüllen.
Das Verifizierungsobjekt ruft intern zwei verschiedene Tools auf: DTD-Analysator und Schema-Builder. Der DTD-Parser untersucht den Inhalt des aktuellen Knotens und der Teilbäume, die nicht der DTD entsprechen. Der Schemagenerator erstellt ein SOM (Schemaobjektmodell) für den aktuellen Knoten basierend auf dem XDR- oder XSD-Schema. Die Schemageneratorklasse ist eigentlich die Basisklasse für alle designierten XDR- und XSD-Schemageneratoren. Warum? Obwohl viele ähnliche Methoden von XDR- und XSD-Architekturen verarbeitet werden, gibt es keinen Unterschied in ihrer Leistung während der Ausführung.
??Wenn der Knoten untergeordnete Knoten hat, verwenden Sie einen anderen temporären Browser, um Informationen zu untergeordneten Knoten zu sammeln, damit die Schemainformationen des Knotens vollständig überprüft werden können. Sie können Abbildung 5 sehen:
?? Beachten Sie, dass die Strukturfunktion der XmlValidatingReader-Klasse zwar eine XmlReader-Klasse als Browser empfangen kann , Der Browser kann jedoch nur eine Instanz der XmlTextReader-Klasse oder eine Instanz einer ihrer abgeleiteten Klassen sein. Dies bedeutet, dass Sie keine anderen von XmlReader abgeleiteten Klassen (z. B. einen benutzerdefinierten XML-Browser) verwenden können. Intern geht die XmlValidatingReader-Klasse davon aus, dass der Browser ein untergeordnetes XmlTextReader-Objekt ist, und konvertiert den übergebenen Browser explizit in eine XmlTextReader-Klasse. Wenn Sie XmlNodeReader oder einen benutzerdefinierten Browser verwenden, kommt es beim Kompilieren zu einem Fehler des Programms und zur Laufzeit wird eine Ausnahme ausgelöst.
??Knotenbrowser
??Der XML-Browser bietet eine inkrementelle Methode (Lesen eines Knotens nach dem anderen), um den Inhalt des Dokuments zu verarbeiten. Bisher sind wir davon ausgegangen, dass es sich bei der Quelldatei um einen festplattenbasierten Stream oder einen String-Stream handelt. Wir können jedoch nicht garantieren, dass uns in der Praxis ein XMLDOM-Objekt der Quelldatei bereitgestellt wird. In diesem Fall benötigen wir eine spezielle Klasse mit speziellen Lesemethoden. Für diese Situation stellt das .NET Framework die XmlNodeReader-Klasse bereit.
??So wie XmlTextReader auf alle Knoten im angegebenen XML-Stream zugreift, greift die XmlNodeReader-Klasse auf alle Knoten im XMLDOM-Unterbaum zu. Die XMLDOM-Klasse (XmlDocument-Klasse im .NET Framework) unterstützt Xpath-basierte Methoden, z. B. die SelectNodes-Methode und die SelectSingleNode-Methode. Der Zweck dieser Methoden besteht darin, übereinstimmende Knoten im Speicher zu platzieren. Wenn Sie alle Knoten in einem Teilbaum verarbeiten müssen, ist ein Knotenbrowser effizienter als ein Browser, der Knoten inkrementell verarbeitet:
// xmldomNode ist der XML-DOM-Knoten
XmlNodeReader nodeReader = new XmlNodeReader (xmldomNode);
while (nodeReader.Read())
{
// Hier etwas tun
}
? „Wenn Sie benutzerdefinierte Daten in einer Konfigurationsdatei (z. B. der Datei web.cofig) referenzieren möchten, füllen Sie die Daten zunächst in den XMLDOM-Baum und verwenden Sie dann die XmlNodeReader-Klasse und die XMLDOM-Klasse, um die Daten gemeinsam zu verarbeiten. Es ist auch effizient.
Das Obige ist der Inhalt der einfachen Verarbeitung von XML-Daten (3-2) in .NET Framework. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.org). .php.cn) !