从Yang模型生成xml / json

时间:2016-06-22 05:14:40

标签: java json xml ietf-netmod-yang

我一直试图找到可以从 java 中的yang模型生成样本xml / json数据的东西,例如对于xsd,有一些工具可以生成Sample xml。

我试过Pyang: 1.它在Python中。 转换后,它给出了yin格式,它与xang规格相当。 对于Eg。如果我使用pyang将其转换为YIN,请使用yang代码:

 leaf templateSendPeriod {
      when "../exportProtocol!='netflow-v5'";
      type uint16;
      default 60;
      units seconds;
    }

这就是我得到的 -

 <leaf name="templateSendPeriod">
      <when condition="../exportProtocol!='netflow-v5'"/>
      <type name="uint16"/>
      <default value="60"/>
      <units name="seconds"/>
    </leaf>

而是我想要的是

<templateSendPeriod></templateSendPeriod>

这样我就可以获得xml,输入详细信息并验证相同的yang。

1 个答案:

答案 0 :(得分:1)

您可以这样做, 首先声明您的模型

 run "#{try_sudo} chmod 755 -R #{current_path}"

对模型进行树表示

map.get(-2)

稍后在您的python代码中使用此代码:

if(place < 3){return "whatever you want when place is less than 3";}

在这里,您可以根据自己的选择获取json或xml的答案。

// module name
module napalm-star-wars {

    // boilerplate
    yang-version "1";
    namespace "https://napalm-yang.readthedocs.io/napalm-star-wars";

    prefix "napalm-star-wars";

    // identity to unequivocally identify the faction an individual belongs to
    identity AFFILIATION {
      description "To which group someone belongs to";
    }

    identity EMPIRE {
      base AFFILIATION;
      description "Affiliated to the empire";
    }

    identity REBEL_ALLIANCE {
      base AFFILIATION;
      description "Affiliated to the rebel alliance";
    }

    // new type to enforce correctness of the data
    typedef age {
      type uint16 {
        range 1..2000;
      }
    }

    // this grouping will all the personal data we will assign to individuals
    grouping personal-data {
        leaf name {
            type string;
        }
        leaf age {
            type age;
        }
        leaf affiliation {
            type identityref {
                base napalm-star-wars:AFFILIATION;
            }
        }
    }

    // this is the root object defined by the model
    container universe {
        list individual {
            // identify each individual by using the name as key
            key "name";

            // each individual will have the elements defined in the grouping
            uses personal-data;
        }
    }
}