XmlParser – library MetaTrader 5

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. |
//|                                               |
//|                                                   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:

Alternative:  UltraAbsolutelyNoLagLwma - indicator MetaTrader 5


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


📈 ROBOTFX MetaTrader Expert Advisors and Indicators to maximize profits and minimize the risks