Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Telegram!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Bibliotheken

XML parser - Bibliothek für den MetaTrader 5

Ansichten:
885
Rating:
(31)
Veröffentlicht:
2016.06.10 10:32
Aktualisiert:
2016.11.22 07:34
\MQL5\Include\XML\
xmlbase.mqh (0.56 KB) ansehen
xmlelement.mqh (18.89 KB) ansehen
\MQL5\Scripts\
xml_test.mq5 (1.39 KB) ansehen
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Eine Bibliothek zum Parsen von XML-Dokumenten. Reines MQL5, es werden keine externen Bibliotheken verwendet.

Um die Bibliotheken zu nutzen, einfach laden mit:

#include <Xml\XmlBase.mqh>

Beispiel:

#include <Xml\XmlBase.mqh>

CXmlDocument doc;

void OnStart() 
{
  string file = "File.xml";
  string err;
  if (doc.CreateFromText(file,err))
  {
    CXmlElement * xmlItem = doc.FDocumentElement.GetChild(0);
    for (int i=0; i<xmlItem.GetChildCount(); i++) 
    if (xmlItem.GetChild(i).GetName() == "LAYER")
    {
      CXmlElement* layer = xmlItem.GetChild(i);
      for (int j=0; j<layer.GetChildCount(); ++j) 
      {        
        if (layer.GetChild(j).GetName() == "NEURON")
        {
           /* .... */
        }
      }
    }
  }
}

Anmerkungen:

  • Die Bibliothek wurde geschrieben, als die Konstruktoren in MQL5 noch ohne Parameter waren;
  • Nur die grundlegenden Funktionen der Xml-Standards werden unterstützt;
  • Bitte informieren Sie mich über Fehler, Vorschläge und Fehlerkorrekturen.

Haupt-Komponenten:

Die Klasse CXmlDocument bietet Methoden für das laden von XML-Dokumenten aus Dateien/Zeichenketten und die Speicherung in Dateien.

Die CreateX Funktionen parst XML-Dokumente und erstellt eine Hierarchie von DOM-Elemente FDocumentElement, mit denen dann weitergearbeitet werden kann. 

class CXmlDocument 
{
  private:

    void DoElementTrimText(CXmlElement &aXmlItem) ;
  
  public:
    CXmlElement FDocumentElement;

    void CXmlDocument ();
    void ~CXmlDocument ();
    void Clear();
    void CopyTo (CXmlDocument &xmlDoc);
  
    bool  CreateFromText (const string& xml, string& err);
    bool  CreateFromFile (const string filename, string& err);
    bool  SaveToFile (const string filename);

    string GetXml();
};

 

Die Klasse CXmlElement ist die Basis-Schnittstelle jedes XML-Dokuments. Es bietet Zugriff auf die Elemente, Eigenschaften und den Inhalt

class CXmlElement 
{
  private:
    string         FName;
    CXmlAttribute* FAttributes[];
    CXmlElement   *FElements[];
    string         FText;
    CXmlElement*   FParent;
  public:  
    //--- constructor methods
    void  CXmlElement ();
    void ~CXmlElement ();
    void Init (const string aName, const CXmlElement* aParent=NULL, const string aText="");
    void CopyTo (CXmlElement &aDst);
    virtual void Clear ();
    
    //--- main service methods
    string GetName () const;
    void SetName (const string aName);
    string GetText () const;
    void SetText (const string aText);
    CXmlElement* GetParent () const;
    void SetParent (CXmlElement* aParent);
    
    //--- attribute service methods
    int GetAttributeCount () const;
    int GetAttributeIndex (CXmlAttribute* aAttr) const;
    CXmlAttribute* GetAttribute (const string aName) const;
    CXmlAttribute* GetAttribute (int aPos) const;
    string GetAttributeValue (const string aName) const;
    
    CXmlAttribute* AttributeInsertAt (CXmlAttribute* aAttr, int aPos);
    CXmlAttribute* AttributeAdd (CXmlAttribute* aAttr);
    CXmlAttribute* AttributeInsertAfter (CXmlAttribute* aAfter, CXmlAttribute* aAttr);
    CXmlAttribute* AttributeInsertBefore (CXmlAttribute* aBefore, CXmlAttribute* aAttr);
    CXmlAttribute* AttributeRemove (CXmlAttribute* aAttr);
    CXmlAttribute* AttributeRemove (int aPos);
    void AttributeDelete (CXmlAttribute* aAttr);
    void AttributeDelete (int aPos);
    void AttributeDeleteAll ();
  
    //--- child service methods
    int GetChildCount() const;
    int GetChildIndex (CXmlElement* aElement) const;
    CXmlElement* GetChild (const string aName) const;
    CXmlElement* GetChild (int aPos) const;
    string GetChildText (const string aName) const;

    CXmlElement* ChildInsertAt (CXmlElement* aElement, int aPos);
    CXmlElement* ChildAdd (CXmlElement* aElement);
    CXmlElement* ChildInsertAfter (CXmlElement* aAfter, CXmlElement* aElement);
    CXmlElement* ChildInsertBefore (CXmlElement* aBefore, CXmlElement* aElement);
    CXmlElement* ChildRemove (CXmlElement* aElement);
    CXmlElement* ChildRemove (int aPos);
    void ChildDelete (CXmlElement* aElement);
    void ChildDelete (int aPos);
    void ChildDeleteAll ();
  
    string GetXml(int aLevel);
};

 

Die Klasse CXmlAttribute ist einfache Klasse für die Bearbeitung der Attribute

class CXmlAttribute 
{
  private:
    string FName;
    string FValue;
 public:
    //--- constructor methods
    void CXmlAttribute ();
    void ~CXmlAttribute ();

    void Init (const string aName, const string aValue);
    virtual void Clear ();
    virtual CXmlAttribute* Clone ();
    
    //--- service methods
    string GetName () const;
    void SetName (const string aName);
    string GetValue () const;
    void SetValue (const string aValue);    
};

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/712

DinapoliTargets_Full DinapoliTargets_Full

Diese Version des DinapoliTargets_Full-Indikators ist sehr praktisch, weil er auf jeder Bar des Charts zeichnet, welches dem Nutzer erlaubt immer das ganze Bild zu sehen. Eigentlich ist dieser Anzeige am wertvollsten bei der Analyse einer Strategie im offline-Modus.

DinapoliTargets DinapoliTargets

Der Indikator zeichnet ein Gitter von möglichen, zukünftigen Preisen.

Polarized Fractal Efficiency Polarized Fractal Efficiency

Der technische Indikator Polarized Fractal Efficiency zeigt die aktuelle Markteffizienz.

AsymmetricStochNR AsymmetricStochNR

Erweiterte Version des Stochastik Oszillators.