Join our fan page
- Views:
- 4729
- 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
![iBBFill](https://c.mql5.com/i/code/indicator.png)
The indicator plots the Bollinger Bands ®, filled with different colors depending on the trend direction.
![iMovment](https://c.mql5.com/i/code/indicator.png)
The indicator plots the candles with different colors depending on the trend direction and price movement.
![ZeroLag MACD](https://c.mql5.com/i/code/indicator.png)
The ZeroLag MACD indicator shows the histogram with color of the previous bar.
![Murrey Math Lines (support and resistance)](https://c.mql5.com/i/code/indicator.png)
The indicator plots Murrey Math Lines for all available history, it doesn't uses any objects.