【问题标题】:Comparing 2 objects in XML, ideas needed [closed]比较 XML 中的 2 个对象,需要一些想法 [关闭]
【发布时间】:2016-10-19 20:12:12
【问题描述】:

我正在考虑生成一份智能报告,描述将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 的键

我可以使用一个库来优雅地处理这个问题吗?

任何朝向PerlPython 的方向都将不胜感激

【问题讨论】:

  • 您对图书馆的期望有多少?为了以各种方式很好地解析 XML,是的,无论如何都有很好的方法。我不希望图书馆有这个特殊的功能。你能澄清一下吗?

标签: python xml perl


【解决方案1】:

您也许可以通过 xml 架构验证 工具运行您的 xml。如果您使用的是 python,lxml 库支持它。更多关于 xml 架构的信息可以在here找到。

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

【讨论】:

  • 在 Perl 方面,XML::LibXML 可用于模式验证。
【解决方案2】:

Perl 库 XML::LibXMLXML::Twig 很容易被推荐用于处理 XML。他们将解析 XML 并为您提供 Perl 数据结构,然后您可以使用这些结构。

提供libxml2 接口的XML::LibXML 的文档可在多个单独的页面中找到。您可能想首先查看XML::LIbXML::Reader,这是一个遍历文档流而不是加载整个树的拉式解析器,也许还有XPath contextSchema validation 上的那些。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多