ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
1677
1677
EMPFEHLEN
-
07.09.11 10:23 #1
- Registriert seit
- Apr 2007
- Beiträge
- 153
Hallo,
ich muss XML-Dateien eines bestimmten Dialekts (ARXML) mit .NET verarbeiten.
Code :1 2 3 4 5 6 7 8 9 10
arxmlDocument.XmlResolver = new XmlUrlResolver(); arxmlDocument.Load(fileName); ValidationHandler handler = new ValidationHandler(); ValidationEventHandler eventHandler = new ValidationEventHandler(handler.ValidationEventHandler); arxmlDocument.Validate(eventHandler);
In den XML-Dateien ist auch stets ein XML-Schema angegeben. Wenn ich jedoch die Validate Methdoe ausführe wird eine Exception mit folgender Message geworfen.
Ich hatte angenommen, dass das XML-Schema von der in der XML-Datei angegebenen Url verwendet wird und habe deswegen den XmlUrlResolver verwendet. Ist das so überhaupt möglich, oder muss ich das XML-Schema lokal einlesen ?Das XmlSchemaSet für das Dokument ist entweder Null oder enthält keine Schemas. Stellen Sie vor dem Aufruf von 'Validate' Schemainformationen bereit.
-
23.01.12 15:25 #2
- Registriert seit
- Apr 2007
- Beiträge
- 153
Hallo,
ich versuche zurzeit eine XML-Datei nach einem Schema zu validieren.
Hierfür verwende ich folgenden Code.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
namespace ArxmlCheck { class Program { static void ValidationEventHandler(object sender, ValidationEventArgs e) { System.Console.Error.WriteLine("[{0}/{1}] {2}", e.Exception.LineNumber, //Zeile e.Exception.LinePosition, //Spalte e.Exception.Message); //Beschreibung } static void Main(string[] args) { XmlReaderSettings xmlReaderSettings = new XmlReaderSettings(); xmlReaderSettings.ValidationType = ValidationType.Schema; xmlReaderSettings.Schemas.Add("http://autosar.org/3.1.5", args[1]); xmlReaderSettings.ValidationEventHandler += ValidationEventHandler; XmlReader xmlReader = XmlReader.Create(args[0], xmlReaderSettings); while (xmlReader.Read()) ; System.Console.WriteLine("Finished"); } } }
Jetzt habe ich das Problem, dass der Wert von xmlns im XML Schema und in der XML-Datei unterschiedlich sind. Bedeutet dies, dass das von mir verwendete Schema nicht das Schema für die von mir zu validierende Datei ist ?
Gibt es auch eine Möglichkeit, wie ich überprüfen kann, dass die Validierung erfolgreich durchgeführt wurde ? Denn mein ValidationEventHandler wird nicht ein Mal aufgerufen.
-
23.01.12 15:37 #3
- Registriert seit
- Apr 2007
- Beiträge
- 153
Wenn ich folgenden Code ergänze ...
Code :1
xmlReaderSettings.ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings;
... erhalte ich folgende Warnung(en).
Die Schemainformation für das Element 'http://autosar.org/3.1.4.XXX.2:L-2' konnten nicht gefunden werden.
-
23.01.12 16:31 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
Hi.Ja, das ist möglich. Dazu muß im Dokument allerdings auch wirklich vereinbart sein, wo das Schema heruntergeladen werden kann. (XMLSchema-instance -> schemaLocation).
Du hast eine andere Version des Schemas verwendet. Die Schemata passen nicht zusammen.
Was meinst du mit "Wert" von xmlns? Meinst du den Namensraum-Präfix oder wirklich den Wert des Attributes?
Kommt drauf an was du meinst...
Dann gab es auch keine Probleme.
Gruß
PS: Bitte füge die Ausgaben nicht als Zitate ein, sondern als Code. Das match sich mit dem zitieren besser.If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
24.01.12 14:22 #5
- Registriert seit
- Apr 2007
- Beiträge
- 153
Hallo,
ich habe mal jeweils die Root-Elemente des XML Schema und der XML Instanz angehängt.
XML Schema
Code :1
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:AR="http://autosar.org/3.1.5" targetNamespace="http://autosar.org/3.1.5" elementFormDefault="qualified" attributeFormDefault="unqualified">
XML Instanz
Code :1
<AUTOSAR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://autosar.org/3.1.4.XXX.2" xsi:schemaLocation="http://autosar.org/3.1.4.XXX.2 autosar.xsd" T="2010-10-15T13:41:41">
Bei dem XML Schema handelt es sich um eine Vorgabe bzw. einen Standard. Dieser scheint aber herstellerspezifisch erweitert bzw. eingeschränkt worden sein ...
Ich muss mir jetzt wohl ein Herstellerspezifisches XML Schema besorgen ******
-
24.01.12 17:44 #6
- Registriert seit
- Dec 2011
- Beiträge
- 30
Das Schema definiert Elemente in seinem targetNamespace http://autosar.org/3.1.5, das XML-Dokument hingegen hat Elemente im Namensraum http://autosar.org/3.1.4.XXX.2.
Ähnliche Themen
-
JAVA XML parsen und DOM mit Schema validieren
Von biturbogolf im Forum JavaAntworten: 2Letzter Beitrag: 14.03.12, 01:03 -
SaxBuilder: XML-Datei auf lokale DTD, lokales Schema validieren
Von RalU im Forum JavaAntworten: 2Letzter Beitrag: 27.07.10, 19:28 -
externes XML-Schema mit JDOM validieren
Von lubu im Forum JavaAntworten: 13Letzter Beitrag: 18.01.08, 22:18 -
Mit JDOM XML-Datei gegen XML-Schema validieren
Von mmueller78 im Forum JavaAntworten: 1Letzter Beitrag: 17.08.07, 14:15 -
XML gegen Schema validieren
Von mtk-flo im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 27.06.07, 16:02





Zitieren

Login





