7.2.7 XML
XML VI和函数用于操作XML格式的数据,可扩展标记语言(XML)是一种独立于平台的标准化统一标记语言(SGML),可用于存储和交换信息。使用XML文档时,可使用解析器提取和操作数据,而不必直接转换XML格式。例如,文档对象模型(DOM)核心规范定义了创建、读取和操作XML文档的编程接口。DOM核心规范还定义了XML解析器必须支持的属性和方法。XML VI子选板如图7-81所示。
1.LabVIEW模式VI和函数
LabVIEW模式VI和函数用于处理XML格式的LabVIEW数据。LabVIEW模式子选板如图7-81所示。

图7-81 XML VI子选板

图7-82 LabVIEW模式子选板
1)平化至XML:根据LabVIEW XML模式将连接至任何的数据类型转换为XML字符串。如果任何含有<、>或 &等字符,该函数将分别把这些字符转换为<、>或&。可将其他字符使用转换特殊字符至XMLVI(例如,“转换为XML语法)。平化至XML函数的节点图标及端口定义如图7-83所示。
2)从XML还原:依据LabVIEW XML模式将XML字符串转换为LabVIEW数据类型。如果XML字符串含有<、>或&等字符,该函数将分别把这些字符转换为<、>或&。使用从XML还原特殊字符VI转换其他字符(例如")。从XML还原函数的节点图标及端口定义如图7-84所示。

图7-83 平化至XML函数

图7-84 从XML还原函数
3)写入XML文件:将XML数据的文本字符串与文件头标签同时写入文本文件。通过将数据连线至XML输入端可确定要使用的多态实例,也可手动选择实例。所有XML数据必须符合标准的LabVIEW XML模式。写入XML文件函数的节点图标及端口定义如图7-85所示。
4)读取XML文件:读取并解析LabVIEW XML文件中的标签。将该VI放置在程序框图上时,多态VI选择器可见。通过该选择器可选择多态实例。所有XML数据必须符合标准的LabVIEW XML模式。读取XML文件VI的节点图标及端口定义如图7-86所示。

图7-85 写入XML文件函数

图7-86 读取XML文件VI
5)转换特殊字符至XML:依据LabVIEW XML模式将特殊字符转换为XML语法。平化至字符串函数可将<、>或&等字符分别转换为<、>或&。但如果需要将其他字符如”)转换为XML语法,则必须使用“转换特殊字符至XML”。转换特殊字符至XML VI的节点图标及端口定义如图7-87所示。
6)从XML还原特殊字符:依据LabVIEW XML模式将特殊字符的XML语法转换为特殊字符。从XML还原函数可将<、>或&等字符分别转换为<、>或&。但如果需要转换其他字符(如"),则必须使用“从XML还原特殊字符”函数。从XML还原特殊字符VI的节点图标及端口定义如图7-88所示。

图7-87 转换特殊字符至XML VI

图7-88 从XML还原特殊字符VI
2.XML解析器
XML解析器可以配置为检测某个XML文档是否有效。如果文档与外部词汇表相符合,则该文档为有效文档。在LabVIEW解析器中,外部词汇表可以是文档类型定义(DTD)或模式(Schema)。有的解析器只解析XML文件,但是加载前不会验证XML。LabVIEW中的解析器是一个验证解析器。验证解析器根据DTD或模式检验XML文档,并报告找到的非法项。必须确保文档的形式和类型是已知的。使用验证解析器可省去为每种文档创建自定义验证代码的时间。
XML解析器在加载文件方法的解析错误中报告验证错误。
注意
XML解析器在LabVIEW加载文档或字符串时验证文档或XML字符串。如果对文档或字符串进行了修改,并要验证修改后的文档或字符串,请使用加载文件或加载字符串方法重新加载文档或字符串。解析器会再一次验证内容。XML解析器子选板如图7-89所示。

图7-89 XML解析器子选板
1)新建(VI):通过该VI可以新建XML解析器会话句柄。新建(VI)的节点图标及端口定义如图7-90所示。(https://www.daowen.com)
2)属性节点(XML):获取(读取)和/或设置(写入)XML引用的属性。该节点的操作与属性节点的操作相同。属性节点(XML)VI的节点图标及端口定义如图7-91所示。

图7-90 新建(VI)

图7-91 属性节点(XML)VI
3)调用节点(XML):调用XML引用的方法或动作。该节点的操作与调用节点的操作相同。调用节点(XML)VI的节点图标及端口定义如图7-92所示。
4)关闭:关闭对所有XML解析器类的引用。通过该多态VI可以关闭对XML_指定节点映射类、XML_节点列表类、XML_实现类和XML_节点类的引用句柄。XML_节点类包含其他XML类。关闭VI的节点图标及端口定义如图7-93所示。

图7-92 调用节点(XML)VI

图7-93 关闭VI
5)获取第一个匹配的节点:返回节点输入的第一个匹配Xpath表达式的节点。获取第一个匹配的节点VI图标及端口定义如图7-94所示。
6)获取所有匹配的节点:返回节点输入的所有匹配Xpath表达式的节点。获取所有匹配的节点VI图标及端口定义如图7-95所示。

图7-94 获取第一个匹配的节点VI

图7-95 获取所有匹配的节点VI
7)获取下一个非文本同辈项:返回节点输入节点中第一个类型为Text_Node的同辈项。获取下一个非文本同辈项VI的节点图标及端口定义如图7-96所示。
8)获取第一个非文本子项:返回节点输入节点中第一个类型为Text_Node的子项。获取第一个非文本子项VI的节点图标及端口定义如图7-97所示。

图7-96 获取下一个非文本同辈项VI

图7-97 获取第一个非文本子项VI
9)获取节点文本内容:返回节点输入节点包含的Text_Node的子项。获取节点文本内容VI的节点图标及端口定义如图7-98所示。
10)加载:打开XML文件并配置XML解析器依据模式或DTD(文档类型定义)对文件进行验证。加载VI的节点图标及端口定义如图7-99所示。

图7-98 获取节点文本内容VI

图7-99 加载VI
11)保存:保存XML文档。保存VI的节点图标及端口定义如图7-100所示。

图7-100 保存VI