??Browser mit Validierung
??Die Klasse XmlValidatingReader implementiert die Klasse XmlReader, die Unterstützung für mehrere Arten der XML-Validierung bietet: DTD, XML-Data Reduced (XDR)-Schema und XSD, DTD und XSD werden beide offiziell vom W3C empfohlen. XDR ist ein Format, das Microsoft in seinen Anfängen zur Handhabung der XML-Architektur verwendete.
Sie können die Klasse XmlVlidatingReader verwenden, um XML-Dokumente und XML-Fragmente zu validieren. Die XmlValidatingReader-Klasse funktioniert in XML-Browsern – sie ist eine typische Instanz der XMLTextReader-Klasse. XMLTextReade wird zum Lesen der Knoten des Dokuments verwendet, aber XmlVlidatingReader validiert jeden XML-Block entsprechend dem erforderlichen Validierungstyp.
??Die Klasse XmlVlidatingReader implementiert nur eine sehr kleine Teilmenge der für einen XML-Browser erforderlichen Funktionen. Diese Klasse arbeitet immer mit einem vorhandenen XML-Browser und überwacht Methoden und Eigenschaften. Wenn Sie sich mit der Struktur dieser Klasse befassen, werden Sie feststellen, dass sie offensichtlich von einem vorhandenen Textbrowser abhängt. XML-Browser mit Validierung können nicht direkt aus einer Datei oder einer URL serialisieren. Die Liste der Strukturfunktionen dieser Klasse lautet wie folgt:
public XmlValidatingReader(XmlReader);
public XmlValidatingReader(Stream, XmlNodeType, XmlParserContext); , XmlNodeType, XmlParserContext) );
?? .
??Es gibt nur sehr wenige Methoden, die größere Änderungen in der XmlVlidatingReader-Klasse aufweisen (im Vergleich zu anderen Reader-Klassen). Darüber hinaus verfügt sie für Read über die Methoden Skip und ReadTypedValue. Die Skip-Methode überspringt alle untergeordneten Knoten des aktuellen Knotens (Sie können schlecht formatierten XML-Text nicht überspringen, es ist ein sehr nützlicher Algorithmus), und die Skip-Methode überprüft auch den übersprungenen Inhalt. Die ReadTypedValue-Methode gibt den CLR-Typ zurück, der dem angegebenen XML-Schema-Typ (XSD) entspricht. Wenn diese Methode den CLR-Typ findet, der dem XSD-Typ entspricht, gibt sie den CLR-Typnamen zurück. Wenn er nicht gefunden wird, wird der Wert des Knotens als Zeichenfolgenwert zurückgegeben.
??Der XML-Browser mit Validierung ist, wie der Name schon sagt, ein knotenbasierter Browser, der überprüft, ob die Struktur des aktuellen Knotens dem aktuellen Schema entspricht. Die Validierung erfolgt inkrementell; es gibt keine Methode, die einen booleschen Wert zurückgibt, der angibt, ob das Dokument gültig ist. Normalerweise verwenden Sie die Read-Methode, um das XML-Eingabedokument zu lesen. Tatsächlich können Sie zum Lesen von XML-Dokumenten auch einen Browser mit Authentifizierung verwenden. Bei jedem Schritt wird geprüft, ob die Struktur des aktuell besuchten Knotens mit dem angegebenen Schema übereinstimmt. Wenn nicht, wird eine Ausnahme ausgelöst. Abbildung 4 ist eine Konsolenanwendung, die über eine Befehlszeile zur Eingabe eines Dateinamens verfügt und schließlich die Überprüfungsergebnisse ausgibt.
Abbildung 4 Konsolen-App
mit System.Xml
mit System.Xml.Schema; 🎜>
class MyXmlValidApp
{
public MyXmlValidApp(String fileName)
{
try {
Validate(fileName ) );
}
catch (Ausnahme e) {
Console.WriteLine('Error:t{0}', e.Message); 🎜 >Console.WriteLine('Ausnahme ausgelöst: {0}',
e.GetType().ToString());
}
}
private void Validate(String fileName)
{
XmlTextReader xtr = new XmlTextReader(fileName);
XmlValidatingReader vreader = new XmlValidatingReader(xtr ) ;
vreader.ValidationType = ValidationType.Auto;
vreader.ValidationEventHandler = new
ValidationEventHandler(this.ValidationEventHandle); 🎜 >vreader.Read();
vreader.MoveToContent();
while (vreader.Read()) {}
xtr.Close();
vreader.Close();
}
public void ValidationEventHandle(Object sender,
ValidationEventArgs args)
{
Console.Write('Validation error: ' args.Message 'rn');
}
public static void Main(String[] args)
{
MyXmlValidApp o = new MyXmlValidApp(args[0]);
return
}
}
Das Obige ist der Inhalt der einfachen Verarbeitung von XML-Daten (3-1) in .NET Framework. Weitere verwandte Inhalte finden Sie hier. Bitte achten Sie auf die chinesische PHP-Website (m.sbmmt.com)!