资料库: EasyXML - XML解析器

 

EasyXML - XML解析器:

EasyXML 是一个 MQL5 专有 XML 解析器函数库. 它可以从三个不同来源解析XML: URL, 文件以及字符串输入. 它完全面向对象并且和MQL5完美集成, 因为它使用了MQL5 标准库中的CObject和CArrayObj来保存DOM.

作者: Paul van Hemmen

[删除]  

第一次尝试时, 在新的 MT5 编译并运行 代码

  1. 没有 出现任何 Wininet 问题!
  2. 非常好的 代码

非常棒的贡献!谢谢。

 

感谢你提供了这么好的程序库、

当我试图用 "文件输入 "方法解析 我的文档时,我得到了这样的错误:*** 发现无效字符。应为开放标签的开头 P:0 ***。

在我头痛不已并满世界搜索之后,我意识到解析器接受的编码是 "UCS-2 LE BOM",因此最好在说明中提及这一点、

我的 XMl Writer 使用 "UTF-8-BOM "编码,有什么办法可以改变这种默认编码吗?

 

又见面了,我找到了解决我的问题的办法,也许对其他人有帮助,:)

我修改了一行属于 EasyXML 类的函数"CEasyXml::loadXmlFromFile(string pFilename)":

 int hFile=FileOpen(pFilename,FILE_READ|FILE_ANSI,CP_UTF8); 

这样就能正确读取编码格式为 "UTF-8-BOM "的文件。

但仍需要用 .NET Framework 2.0 删除字符串中的 "BOM "Bytes Of Orders="ï "¿" 字符:

StringReplace(pText,"",""); 

 

你好,我正试图获取以下页面上的数据: https://www.usda.gov/oce/commodity/wasde/latest.xml,但在使用 example_inline_parsing 脚本时,我遇到了以下错误: *** 发现无效字符。应该是一个开放标签的开头 P:0 ***
我只是用上面的网址替换了原来的网址,但脚本不起作用。

有什么好办法吗?

谢谢

 

你好,保罗。


谢谢你提供了一个很棒的实用工具类。

顺便问一下,你能用复制构造函数对 CEasyXmlNode 对象进行深度复制吗?

 

它不起作用...

更多错误

sOutput += (ActualNode.getValue()) ? " Value: '" + ActualNode.getValue() + "'" : "";

返回类型字符串 ActualNode.getValue()...

 

在使用自闭标记时似乎存在一个错误。


因此,在许多 XML 编辑器中,当出现空标签时,该标签会自动转换为自闭标签。 例如

<element></element> 

自动变成

<element/>  or  


<element />

自动。

希望 @Liquinaut 解决这个问题。

幸运的是,在我的案例中,自闭标记的数量相对较少。 但如果文档中有成百上千个这样的标记,用户是否需要以某种方式将这些标记转换为 open + close 标记?


编辑:对于那些希望将自闭标记转换为分离标记的用户,您可能需要使用以下 RegEx 查找/替换功能

查找:(<)(\w*)(.*)(/>)

替换:<$2$3></$2>

[这是在 TextCrawler3 中使用的 .NET regEx 引擎。 其他引擎可能使用不同的格式;请尝试]。 保留原始标记中的所有属性(如果有的话

XML Elements
XML Elements
  • www.w3schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
 

您好,我正在使用该库,但在 easyxmlnode.mqh 中遇到了该函数中指针无效的 错误:

CEasyXmlNode *CEasyXmlNode::createSibling(CEasyXmlNode *pSiblingNode)
  {
   pSiblingNode.Prev(GetPointer(this));
   GetPointer(this).Next(pSiblingNode);

   ParentNode.createChild(pSiblingNode);
   return ParentNode.LastChild();
  }

您知道如何解决这个错误吗?

 
mappi1589 指针无效的 错误:

您知道如何解决这个错误吗?

您的 XML 输入是什么?
 
我在使用一个外汇工厂日历 xml 时,几乎每次都能正常运行,但有时会显示错误。如果再次检测到该错误,我能做些什么来避免该错误或重新运行代码吗?