比较XML中的2个对象,需要的想法

时间:2016-06-17 21:52:21

标签: python xml perl

我正在考虑制作一份智能报告,描述n XML配置文件与一组规则的比较结果。

a.b.Default.StartTime=00:00:00
a.b.Default.SomePath:exists
a.b.Default.BeginString:value_a|value_b

我正在推动3种断言类型:

  1. 有一个具有特定值的键
  2. 有一个有任何价值的钥匙。密钥必须存在并且必须为其分配一些东西
  3. 有一个键值为A或值B
  4. 我可以用一个库来优雅地处理这个问题吗?

    PerlPython的任何指示都将非常受欢迎

2 个答案:

答案 0 :(得分:1)

您可以通过 xml架构验证工具运行xml。如果您正在使用python,则lxml库支持它。有关xml架构的更多信息,请参见here

您还可以使用xmltodict等库将xml数据加载到python字典中,然后在其上运行cerberus验证模式。

答案 1 :(得分:1)

易于推荐用于处理XML的Perl库XML::LibXMLXML::Twig。他们将解析XML并交给您可以使用的Perl数据结构。

提供XML::LibXML接口的libxml2文档可在多个单独的页面中找到。您可能需要先查看XML::LIbXML::Reader,这是一个遍历文档流的pull-parser,而不是加载整个树,也可能是XPath contextSchema validation上的那些。

XML::Twig可以将小文档作为树加载,或者以组合流/树模式处理“巨大”文档。它在xmltwig.org上有很多(附加)文档。

这两个模块都是完整的真正的XML库。首先,两者都充分利用了XPath expressions,帮助在文档中搜索具有特定属性或值的元素。