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