【问题标题】:Validating files having tree based structures验证具有基于树的结构的文件
【发布时间】:2011-05-21 04:58:10
【问题描述】:

我正在寻找一个验证器来验证基于树结构的配置文件。 例如 a.student.name 乔 a.student.class 艺术

您能否提出有关验证此类配置的任何想法。到目前为止,我已经搜索过,我只能找到 xml 文件的验证器。

【问题讨论】:

  • 您能否提供一些您需要执行的示例验证?或者您是否正在考虑属性文件的架构规范?
  • @rahulmohan:我不是 OP,但我是提供赏金的人。我很高兴听到任何用于对非 XML 配置文件执行模式验证的工具或库。正如我在回答中所说,我的 Config4J 库是我在 XML 之外知道的唯一模式验证配置文件解析器。我也希望向其他人学习。
  • 您要检查键还是值?还是只是体格好?
  • @Wolfgang:我所说的“模式验证”不是指语法检查(你称之为格式良好)。我的意思是能够进行一些语义检查。例如,如果配置文件中的一行是 name=value 形式,那么模式验证器应该能够检查 value 是否是例如整数在 0..10 范围内,或一组特定字符串中的一个,例如“red”、“green”或“blue”。用户应该可以声明(而不是必须编码)这样的验证约束。 XML 和 Config4J 提供了这样的模式验证机制。

标签: java validation configuration tree


【解决方案1】:

不幸的是,配置文件的模式验证在 XML 之外很少见。我知道的唯一其他选项是Config4J(我写的)。

如果您访问该网站,则应向下滚动到主页底部以访问完整的手册集(提供 PDF 和 HTML 版本)。我建议您查看手册的以下部分以了解 Config4J 并确定它是否满足您的验证需求。

“入门指南”的第 2 章和第 3 章概述了配置语法和 API。特别是,第 3.10 节提供了模式语言的快速示例。

“入门指南”的第 9 章提供了模式语言的完整定义。

“Java API 指南”的第 3 章讨论了用于编写您自己的模式类型以扩展模式语言功能的 API。

更新:我从 kiran.kumar M 的回答中发现 YAML 的 Java 和 Ruby 实现有一个名为 Kwalify 的模式验证器。

更新:现在有一个schema language for JSON

【讨论】:

    【解决方案2】:

    试试 www.yaml.org 。 Yaml 支持树结构。

    这里是几个解析器的列表, jYaml,SnakeYaml,YamlBeans Yaml 是一种文件格式,支持复杂的层级结构。大多数结构验证可以由上面列出的解析器自动执行。您可能需要额外的代码来验证您的业务需求。

    也有一些在线验证器可用

    见:

    http://yaml-online-parser.appspot.com/

    http://instantyaml.appspot.com/

    另见https://stackoverflow.com/questions/450399/which-java-yaml-library-should-i-use

    验证https://stackoverflow.com/questions/287346/yaml-validation

    【讨论】:

    • 我知道 YAML,但认为它不支持模式验证。但是,在查看了您提供的一些链接后,我发现了 Kwalify,这是一个用于对 YAML 文件进行模式验证的 Java 和 Ruby 库。除非其他人能指出更好的东西,否则你可能会得到赏金。
    【解决方案3】:

    如果结构与 Java 属性文件相同,则可以从中读取属性。然后,您需要确定“验证”的含义。如果适用,您可能有一个简单的方法来解决您的问题。

    【讨论】:

      【解决方案4】:

      没有看到任何形式的样本。 如果你想验证某些东西的结构,并且语义不是问题,你可以使用 lex/yacc(阅读 flex/bison)。

      根据问题,之后可以冒险使用 ox。基本上开始写迷你编译器了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-20
        • 1970-01-01
        • 1970-01-01
        • 2014-12-22
        • 2019-09-04
        • 1970-01-01
        • 2017-07-24
        相关资源
        最近更新 更多