Watch how to download trading robots for free
Find us on Facebook!
Join our fan page
Interesting script?
So post a link to it -
let others appraise it
You liked the script? Try it in the MetaTrader 5 terminal
Views:
4897
Rating:
(36)
Published:
2010.04.12 13:52
Updated:
2016.11.22 07:32
xmlparserdll.zip (235.42 KB)
\MQL5\Include\
xmlparser.mqh (6.12 KB) view
\MQL5\Scripts\
MQL5 Freelance Need a robot or indicator based on this code? Order it on Freelance Go to Freelance

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 Ltd.
Original code: https://www.mql5.com/ru/code/97

iBBFill iBBFill

The indicator plots the Bollinger Bands ®, filled with different colors depending on the trend direction.

iMovment iMovment

The indicator plots the candles with different colors depending on the trend direction and price movement.

ZeroLag MACD ZeroLag MACD

The ZeroLag MACD indicator shows the histogram with color of the previous bar.

Murrey Math Lines (support and resistance) Murrey Math Lines (support and resistance)

The indicator plots Murrey Math Lines for all available history, it doesn't uses any objects.