Download MetaTrader 5

Watch how to download trading robots for free

Interesting script?
So post a link to it -
let others appraise it

You liked the script? Try it in the MetaTrader 5 terminal

2010.04.12 13:52
Libraries

XmlParser - library for MetaTrader 5

| English Русский 中文 Español Deutsch 日本語 Português

Views:
1787
Rating:
votes: 29
xmlparserdll.zip (235.42 KB)
\MQL5\Include\
xmlparser.mqh (6.12 KB)view
\MQL5\Scripts\

The CXmlElement class provides the following opportunities for working with XML documents.

  • It allows you to create DOM-model (objects tree) from the XML-document (or from its single element);
  • It allows you to read, modify, create and delete the nested elements and text;
  • It allows you to save the object model to XML.

Class interface:

class CXmlElement
{
public:
  string        Name;
  CXmlElement   *Elements[];
  CXmlAttribute *Attributes[];
  string        Text;
  ...  
  string SetXml (string xml);
  string GetXml ();
};

For access to the class attributes a simple class CXmlAttribute is used:

class CXmlAttribute 
{
public:
  string Name;
  string Value;
};

Here is a simple example of script, that parses XML and prints an information from DOM tree:

//+------------------------------------------------------------------+
//|                                              XmlParserScript.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//|                                                   yu-sha@ukr.net |
//+------------------------------------------------------------------+
#include <XmlParser.mqh>
//+------------------------------------------------------------------+
//| Script start                                                     |
//+------------------------------------------------------------------+
void OnStart()
  {
   CXmlElement xmldoc;
   string xml="<!--Comment--><ROOT><ITEM  Attr1=\"HELLOW\">Terminal &quot;MT5&quot;</ITEM></ROOT>";
   Print("XML="+xml);
   string res=xmldoc.SetXml(xml);
   if(res=="")
     {
      Print("The Root element: "+xmldoc.Name);
      Print("  Number of Attributes: "+string(ArraySize(xmldoc.Attributes)));
      Print("  Nested elements: "+string(ArraySize(xmldoc.Elements)));
      Print("  First nested element:"+xmldoc.Elements[0].Name);
      Print("    Its first attribute: "+xmldoc.Elements[0].Attributes[0].Name+"="+xmldoc.Elements[0].Attributes[0].Value);
      Print("    Its text: "+xmldoc.Elements[0].Text);
      Print("XML="+xmldoc.GetXml());
     }
   else
      Print(res);
  }
//+------------------------------------------------------------------+

Here is a result of script execution:


Additional information:

  • The current version loads into the DOM only the elements, their attributes and text. All other types of the information (comments, descriptions, ...) are ignored. As a result - maybe the loss of the information about codepage, version, so XML document may be saved incorrectly.
  • While saving it converts the special symbols like <"&'> into the essences like &lt:, &gt;, ... according to the standard.
  • This parser is intended mostly for parsing the XML documents, rather than fully working with XML documents.

Files location:

  • terminal_data_folder\MQL5\Libraries\xmlparser.dll
  • terminal_data_folder\MQL5\Include\xmlparser.mqh
  • terminal_data_folder\MQL5\Scripts\xmlparserscript.mq5

Translated from Russian by MetaQuotes Software Corp.
Original code: https://www.mql5.com/ru/code/97

Accelerator Oscillator (AC) Accelerator Oscillator (AC)

The Acceleration/Deceleration Indicator (AC) measures acceleration and deceleration of the current driving force.

Average Directional Movement Index (ADX) Average Directional Movement Index (ADX)

The Average Directional Movement Index Indicator (ADX) helps to determine if there is a price trend.

Holt's double exponential smoothing trend Holt's double exponential smoothing trend

Holt's double exponential smoothing - the trend component (mt4 version).

Holt's double exponential smoothing (mt4 version) Holt's double exponential smoothing (mt4 version)

Holt's double exponential smoothing with linear forecasting.