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 "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