- 显示:
- 1459
- 等级:
- 已发布:
- 2014.01.21 07:43
- 已更新:
- 2016.11.22 07:33
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
这个 CXmlElement 类提供以下功能与 XML 文档工作。
- 它允许您从 XML文档 (或从它的单个元素) 创建 DOM-模型 (对象树);
- 它允许您读, 修改, 创建和删除嵌套元素和文本;
- 它允许您保存对象模型至 XML。
类接口:
class CXmlElement { public: string Name; CXmlElement *Elements[]; CXmlAttribute *Attributes[]; string Text; ... string SetXml (string xml); string GetXml (); };
对于存取类属性,用到一个简单的类 CXmlAttribute:
class CXmlAttribute { public: string Name; string Value; };
此处是一个简单的脚本例子, 解析 XML 并打印从 DOM 树得到的信息:
//+------------------------------------------------------------------+ //| XmlParserScript.mq5 | //| Copyright 2009, MetaQuotes Software Corp. | //| http://www.mql5.com | //| yu-sha@ukr.net | //+------------------------------------------------------------------+ #include <XmlParser.mqh> //+------------------------------------------------------------------+ //| 脚本开始 | //+------------------------------------------------------------------+ 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("根元素: "+xmldoc.Name); Print(" 属性数量: "+string(ArraySize(xmldoc.Attributes))); Print(" 嵌套元素: "+string(ArraySize(xmldoc.Elements))); Print(" 第一个嵌套元素:"+xmldoc.Elements[0].Name); Print(" 它的第一个属性: "+xmldoc.Elements[0].Attributes[0].Name+"="+xmldoc.Elements[0].Attributes[0].Value); Print(" 它的文本: "+xmldoc.Elements[0].Text); Print("XML="+xmldoc.GetXml()); } else Print(res); } //+------------------------------------------------------------------+
这是脚本执行结果:
附加信息:
- 当前版本仅加载 DOM 的元素, 它们的属性和文本。所有其它类型信息 (注释, 描述, ...) 均被忽视。作为结果 - 也许会遗失一些信息,如代码页, 版本, 所以保存 XML 文档也许会不正确。
- 当保存时,会依据标准转换特殊符号,像 <"&'> 至 <:, >, ...。
- 这个解析器的目的主要是解析 XML 文档,而不是完全使用 XML 文档工作。
文件位置:
- terminal_data_folder\MQL5\Libraries\xmlparser.dll
- terminal_data_folder\MQL5\Include\xmlparser.mqh
- terminal_data_folder\MQL5\Scripts\xmlparserscript.mq5
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/97