使用 Junos XML 管理协议和 Junos XML API 的优势
Junos XML 管理协议和 Junos XML API 完全记录每个受支持的 Junos OS 操作请求、Junos OS 配置层次结构中的所有语句以及相当于配置模式命令的基本操作的所有选项。标记名称明确指示操作或配置请求或 配置语句中的元素的功能。
将有意义的标记名称与 DTD 中的结构规则相结合,便于理解 XML 标记数据集或文档的内容和结构。Junos XML 和 Junos XML 协议标记元素使得向设备请求信息的客户端应用程序直截了当地解析输出并查找特定信息。
解析设备输出
以下示例说明了 Junos XML API 如何更轻松地解析设备输出并提取所需信息。该示例比较了运行 Junos OS 的设备的 格式化 ASCII 和 XML 标记的输出版本。
格式化的 ASCII 如下所示:
Physical interface: fxp0, Enabled, Physical link is Up Interface index: 4, SNMP ifIndex: 3
相应的 XML 标记版本为:
<interface> <name>fxp0</name> <admin-status>enabled</admin-status> <operational-status>up</operational-status> <index>4</index> <snmp-index>3</snmp-index> </interface>
当客户端应用程序需要从格式化的 ASCII 输出中提取特定值时,它必须依赖于值的位置,表示完全或与相邻字段中的标签或值有关。假设客户端应用程序想要提取接口索引。它可以使用正则表达式匹配实用程序来定位特定字符串,但其中一个困难在于接口索引中的数字数不一定可预测。客户端应用程序不能简单地在标签之后 Interface index:
读取一定数量的字符,而必须提取标签与后续标签 SNMP ifIndex:
之间的所有字符,还必须计入所包含逗号。
如果文本输出的格式或订购在 Junos OS 的后续版本中发生更改,则会出现问题。例如,如果按照接口索引号添加了字 Logical index:
段,则新格式的 ASCII 显示如下:
Physical interface: fxp0, Enabled, Physical link is Up Interface index: 4, Logical index: 12, SNMP ifIndex: 3
提取由 Interface index:
和 SNMP ifIndex:
标签划定的接口索引号的应用程序现在会获得错误的结果。应用程序必须手动更新,才能将标签搜索 Logical index:
为新的划定器。
相比之下,XML 标记输出的结构化特性使客户端应用程序能够在开口 <index>
标记和关闭 </index>
标记中提取所有内容,从而检索接口索引。应用程序无需依赖元素在输出字符串中的位置,因此 Junos XML 协议服务器可以按标记元素中 <interface>
的任何顺序发出子标记元素。在未来版本中添加新 <logical-index>
标记元素不会影响应用程序找到 <index>
标记元素并提取其内容的能力。
显示设备输出
与格式化的 ASCII 输出相比,XML 标记的输出也更容易转换为不同的显示格式。例如,您可能需要在不同时间显示有关给定设备组件的不同细节。当设备返回格式化的 ASCII 输出时,必须在显示程序中编写特殊例程和数据结构,以提取和显示给定细节级别的相应信息。相比之下,XML 输出的固有结构是显示程序自身结构的理想基础。对于多个细节级别,也很容易使用相同的提取程序,只需在创建不太详细的显示时忽略您不需要的标记元素。