Ich habe folgende XML-SchemaUngültige XDocument wird immer
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="unqualified" elementFormDefault="qualified"
targetNamespace="http://www.MySchema.net" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="RootElement">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
und folgende xml die gegen oben Schema validiert:
Fall 1: (Schema Ausnahme)
<?xml version="1.0" encoding="utf-8" ?> <RootElement11 name="Configuration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.MySchema.net Root" xmlns="http://www.MySchema.net">
</RootElement11>
Fall 2: (Keine Ausnahme)
<?xml version="1.0" encoding="utf-8" ?>
<RootElement11 name="Configuration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.YourSchema.net Root" xmlns="http://www.YourSchema.net">
</RootElement11>
Fall 3: (keine Ausnahme)
<RootElement11 name="Configuration">
</RootElement11>
für den Fall 1, erhalte ich eine erwartete Ausnahme, dass, aber Fall 2 und Fall 3 sind ausnahmslos validiert „Das‚http://www.MySchema.net:RootElement1‘Element nicht deklariert ist.“.
Ich wollte wissen, ob es eine Möglichkeit gibt, eine Ausnahme auszulösen, wenn XML-Dateien mit falschen Namespaces oder ohne Namespaces mit der XDocument.Validate-Methode validiert werden.
Ich habe einige info gefunden, die XmlReader mit Einstellungen verwenden, um diese Art von Ausnahme auszulösen. Ich sehe zwei Möglichkeiten 1) Zurück zu XmlReader von XDocument, 2) Validiere mit XmlReader und benutze XDocument, um LINQ-Abfragen durchzuführen. Aber ist es möglich, dies ohne XmlReader zu erreichen.
Ich würde eine Erweiterungsmethode für XDocument erstellen, und in dieser Methode XmlReader über XDocument.CreateReader für die Validierung verwenden. Also grundsätzlich 2. Methode. – Evk
Mögliches Duplikat von [XDocument.Validate ist immer erfolgreich] (http://stackoverflow.com/questions/17232575/xdocument-validate-is-always-successful) –