我正在尝试找到一种更好的方法来生成XML RPC请求,以便将其发送到包含NETCONF标记的设备。
我们知道请求应该是什么样子,所以我正在做的是,只需在其中使用占位符对XML-RPC请求XML进行硬编码。这些占位符可以在以后用实际输入替换。
例如:
<rpc message-id="">
<get-config>
<source>
<running/>
</source>
<filter type="subtree" base_path="">
<wing-stats>
<device>
<lldp>
<dev_id/>
<local_port/>
<neighborId/>
<Neighbor_port_id/>
</lldp>
<mac>@device_mac</mac>
</device>
</wing-stats>
</filter>
</get-config>
</rpc>
在此示例中,@ send_mac将在发送请求时被替换。但有些我觉得我正在硬编码请求XML。有没有更好的方法来生成请求XML?
Netconf数据将使用YANG / YIN文件建模。有没有办法可以利用这些文件来生成至少的NETCONF请求部分?
答案 0 :(得分:1)
巴拉,
我想说有两种方法可以做到这一点:你可以使用任何可用的日期模型驱动工具包,我知道其中至少有一个生成面向模型的API并隐藏详细的XML(DOM操纵。第二个方向是使用由RFC 6110工具实现的pyang中定义的YANG到DSDL映射。现在,后者要求您的工具可以与DSDL一起使用,Relax NG基本上是Schematron和{{3}}的组合。
希望这有帮助。
答案 1 :(得分:0)
我会说这一切都取决于你的背景。如果你的应用程序意味着支持这个特定的模型和这个特定的rpc 那么在这么小的用例中使用任何更复杂的,与模型无关的API可能是一种过度的弊端。
另一方面,如果您的应用程序必须支持许多模型和rpcs,或者即使它需要支持在运行时添加的新模型,那么您肯定应该探索可应用于任何模型的解决方案,例如Carl提到的那些模型。