Join our fan page
XmlParser - library for MetaTrader 5
- Views:
- 4946
- Rating:
- Published:
- 2010.04.12 13:52
- Updated:
- 2016.11.22 07:32
- 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 "MT5"</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 <:, >, ... 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
The indicator plots the Bollinger Bands ®, filled with different colors depending on the trend direction.
iMovmentThe indicator plots the candles with different colors depending on the trend direction and price movement.
The ZeroLag MACD indicator shows the histogram with color of the previous bar.
Murrey Math Lines (support and resistance)The indicator plots Murrey Math Lines for all available history, it doesn't uses any objects.