XMLReader <!DOCTYPE> auslesen
-
Hallo
ich habe Problem die 2. Zeile Doctype auszulesen:
Hier die ersten Zeilen des XML Files.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE BMECAT SYSTEM "bmecat_new_catalog_1_2.dtd">
<!--- Katalogdaten------->
<BMECAT version="1.2">
<HEADER>Die erste und dritte Zeile kann ich auslesen und alle anderen auch.
Ich weis nicht welcher XmlNodeType das ist.
Mit der der Anweisung bekomme ich die zweite Zeile nicht ausgelesen.
Auch wenn ich ohne switch Anweisung arbeite bekomme ich den Wert nicht ausgelesen.
String^ XMLText=""; XmlReader^ reader = XmlReader::Create( Pfad, settings ); while (reader->Read()) { switch (reader->NodeType) { case XmlNodeType::Element:{ XMLText+= "Element:"+reader->Value+"\n"; }break; case XmlNodeType::Comment:{ XMLText+="Comment:"+reader->Value +"\n"; }break; } }
mfg
biedego
-
Probiere mal bei den XmReaderSettings die Eigenschaft IgnoreComments auf 'false' zu setzen.
-
Nein leider nicht, geht auch nicht.
while (reader->Read()) { switch (reader->NodeType) { case XmlNodeType::DocumentType: { XMLText+="DoT:"+reader->Name +"\n"; }break; } }
Habe diesen Code in C# ausgeführ und er funktioniert.
In C++/CLI bekomme ich keinen Wert an der Stelle.
Kann aber für das Projekt nicht nach C# wechseln.Hat noch jemand eine Idee ?
-
Habe das Probelm gefunden warum es in C# geht und in C++CLI nicht
Die Settings waren unterschiedlich:
C#:
settings.DtdProcessing = DtdProcessing.Parse;
settings.ValidationType = ValidationType.DTD;C++/CLI:
settings->DtdProcessing = DtdProcessing::Ignore;
settings->ValidationType = ValidationType::None;Ich hatte die Valiedierung abgeschaltet um das XML File zu analysieren.
Ich wollte feststellen ob nach DTD oder Schema Valiediert wird.
Das File was zu analysieren ist kann auf verschiedene weise geliefert werden, mit Schema oder dtd Validierung.Das File kann so aufgebaut sein:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE BMECAT SYSTEM "bmecat_new_catalog_1_2.dtd"> <BMECAT version="1.2">
oder so:
<?xml version="1.0" encoding="UTF-8"?> <BMECAT version="1.2" xmlns="http://www.bmecat.org/XMLSchema/1.2/bmecat_new_catalog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bmecat.org/XMLSchema/1.2/bmecat_new_catalog http://www.advasta.com/XMLSchema/BMEcat/1.2/bmecat_new_catalog_1_2.xsd">
Wie kann man automatisch feststellen welche Validierung anzuwenden ist ?