Bibliotheken: EasyXML - XML Parser

 

EasyXML - XML Parser:

EasyXML ist eine native MQL5 XML Parsing Bibliothek. Sie kann XML von drei verschiedenen Quellen parsen: URL, Datei und String Eingabe. Sie ist vollständig objektorientert und versucht sich saube in MQL5 zu integrieren, indem es CObject und CArrayObj der MQL5 Standard Bibliothek verwendet um das DOM zu speichern.

Autor: Paul van Hemmen

[Gelöscht]  

Ich konnte den Code auf Anhieb kompilieren und ausführen in meinem neuen MT5.

  1. 0 Wininet-Probleme!
  2. Sehr guter Code

Toller Beitrag, vielen Dank.

 

Danke für die gute Bibliothek,

als ich versucht habe, mein Dokument über die Methode "File Input" zu parsen, habe ich folgende Fehlermeldung erhalten: *** Invalid Character found. Sollte der Anfang eines offenen Tags sein P:0 ***.

Nach einigem Suchen habe ich festgestellt, dass der Parser die Kodierung "UCS-2 LE BOM" akzeptiert, so dass es besser war, dies in der Beschreibung zu erwähnen,

Gibt es eine Möglichkeit, diese Standardkodierung zu ändern, da mein XMl Writer "UTF-8-BOM" verwendet?

 

Hallo nochmal, ich habe eine Lösung für meinen Fall gefunden, vielleicht hilft es anderen:)

ich habe eine Zeile der Funktion "CEasyXml::loadXmlFromFile(string pFilename)", die zur EasyXML Klasse gehört, geändert:

 int hFile=FileOpen(pFilename,FILE_READ|FILE_ANSI,CP_UTF8); 

diese liest meine Datei korrekt mit dem Kodierungsformat "UTF-8-BOM".

muss aber noch "BOM "Bytes Of Orders="ï "¿" Zeichen aus dem String mit entfernen:

StringReplace(pText,"",""); 

 

Hallo, ich versuche, die Daten auf dieser Seite zu erhalten: https://www.usda.gov/oce/commodity/wasde/latest.xml aber ich ger diesen Fehler mit dem Skript example_inline_parsing: *** Ungültiges Zeichen gefunden. Should be the beginning of an open tag P:0 ***
Ich ersetze gerade die Original-URL durch die obige und das Skript funktioniert nicht.

Hat jemand eine Idee?

Ich danke Ihnen

 

Hallo, Paul.


Vielen Dank für die Bereitstellung einer großartigen Utility-Klasse.

Kann man übrigens mit dem Copy-Konstruktor eine Deep Copy eines CEasyXmlNode-Objekts erstellen?

 

Es funktioniert nicht...

Plus weitere Fehler

sOutput += (ActualNode.getValue()) ? " Value: '" + ActualNode.getValue() + "'" : "";

Gibt Typ String zurück ActualNode.getValue()...

 

Es scheint einen Fehler zu geben, bei dem selbstschließende Tags verwendet werden.


So wird in vielen XML-Editoren bei einem leeren Tag dieser automatisch in einen selbstschließenden Tag umgewandelt, z.B.

<element></element> 

wird zu

<element/>  or  


<element />

automatisch.

und laut w3 XML elements ist es legal, selbstschließende Tags zu verwenden. Daher weiß ich nicht, warum sie beim Import von XML-Dokumenten nicht unterstützt werden. Hoffentlich kann @Liquinaut das Problem lösen.

Glücklicherweise ist in meinem Fall die Anzahl der selbstschließenden Tags relativ gering. Aber was ist, wenn das Dokument Hunderte oder Tausende solcher Tags hat? Wird von den Benutzern erwartet, dass sie diese Tags irgendwie in open + close Tags umwandeln?


edit: Für diejenigen, die selbstschließende Tags in getrennte Tags umwandeln wollen, können Sie dieses RegEx find/replace verwenden

Suchen: (<)(\w*)(.*)(/>)

Ersetzen: <$2$3></$2>

[Dies ist mit der .NET regEx Engine, die in TextCrawler3 verwendet wird. Andere Engines könnten ein anderes Format verwenden; experimentieren Sie]. Behält alle Attribute innerhalb des ursprünglichen Tags bei, falls vorhanden

XML Elements
XML Elements
  • www.w3schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
 

Hallo, ich benutze die Bibliothek, aber ich bekomme den Fehler in easyxmlnode.mqh von ungültigen Zeiger in dieser Funktion:

CEasyXmlNode *CEasyXmlNode::createSibling(CEasyXmlNode *pSiblingNode)
  {
   pSiblingNode.Prev(GetPointer(this));
   GetPointer(this).Next(pSiblingNode);

   ParentNode.createChild(pSiblingNode);
   return ParentNode.LastChild();
  }

Wissen Sie, wie ich den Fehler lösen kann?

 
mappi1589 ungültigen Zeiger in dieser Funktion:

Wissen Sie, wie ich den Fehler lösen kann?

Was ist Ihre XML-Eingabe?
 
eine Forex-Fabrik Kalender xml, es funktioniert fast jedes Mal, aber zufällig zeigt es diesen Fehler. Kann ich etwas tun, um den Fehler zu vermeiden oder führen Sie den Code erneut, wenn es diesen Fehler wieder erkennen?