【问题标题】:Parse a XML string in TTCN在 TTCN 中解析 XML 字符串
【发布时间】:2017-01-03 09:37:55
【问题描述】:

我正在使用 Eclipse 在 TTCN-3 中编写一个测试用例。在其中一个测试用例中,我从模拟器中得到了一个包含多条记录的 XML 字符串的响应,如下所示:

<Templates><Template><Id>1001</Id><Category>refill</Category><Description>Template description</Description><ApplicationId>AIR</ApplicationId><Name>Template name</Name><SchemaVersion>3.3.14</SchemaVersion></Template><Template><Id>1002</Id><Category>refill</Category><Description>Template Description 1</Description><ApplicationId>AIR</ApplicationId><Name>Template name</Name><SchemaVersion>3.3.14</SchemaVersion></Template></Templates>

现在,我需要解析这个 xml 字符串并从中取出模板对象,以便在测试用例中进一步使用它们。

这里是模板对象定义:

public type record Template
{
    charstring id,
    charstring category,
    charstring description,
    charstring applicationId,
    charstring name,
    charstring schemaVersion
}
public type record of Template Templates;

我是 TTCN 的新手,非常感谢任何帮助。谢谢。

【问题讨论】:

    标签: ttcn


    【解决方案1】:

    您提到了 Eclipse,在这种情况下,它可以是 Spirent 的 TTWorkbench 专有解决方案,也可以是 Eclipse(爱立信)的 TTCN-3 编译器和执行器的 TITAN 开源实现。这里我以开源的 TITAN 为例。

    Titan 具有用于 XML 的内部编解码器,在 herehere 中进行了解释。如您在第二个示例中所见:

    external function enc_AccessControlPolicy(in AccessControlPolicy pdu) return octetstring
    with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }
    
    external function dec_AccessControlPolicy(in octetstring stream) return AccessControlPolicy
    with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }
    

    这会将 XML 转换为 TTCN-3 结构,反之亦然。

    您还可以使用上述方法在 C/C++ 中定义新函数并自己编写编解码器(如果您添加一个具有 'dec_AccessControlPolicy' 和 'enc_AccessControlPolicy' 作为函数的新文件)。这对于一些复杂且(有时)不符合标准的协议很有用(请参阅 Titan 中的 MQTT、CoAP 和其他编解码器实现)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多