【问题标题】:XML base data validation rule in javajava中的XML基础数据验证规则
【发布时间】:2015-01-11 00:52:18
【问题描述】:

嗨,我是 Java 中 XML 的新手。在我最近的项目中,我需要在 XML 中创建验证规则,但问题是不同的用户组可能有不同的规则 例如

<root>
 <user-group type="sale">
    <parameter-name ="loginName">
       <max-length>10</max-length>
       <min-length>4</min-length>
    </parameter-name>
    <parameter-name ="password">
    <max-length>10</max-length>
    <min-length>4</min-length>
    </parameter-name>
 </user-group>   
 <user-group type="clerk">
   <parameter-name ="loginName">
      <max-length>16</max-length>
      <min-length>4</min-length>
      </parameter-name>
      <parameter-name ="password">
      <max-length>12</max-length>
      <min-length>8</min-length>
      </parameter-name>
 </user-group>` 
</root>

那么如何编写一个Java 的东西来实现上述规则。 提前致谢。

【问题讨论】:

  • 对不起,我不知道如何在java中实现逻辑
  • 欢迎来到 StackOverflow!请参阅此页面以帮助我们帮助您:stackoverflow.com/help/how-to-ask。此外,您的 XML 无效(&lt;parameter-name="clerk"&gt; 不是有效节点)。这是您正在解析的真正 XML 还是拼写错误?

标签: java


【解决方案1】:

使用已知的 XML 解析器之一读取 XML。参考 XML Parsing for Java

当您阅读 XML 时,您可以创建一个数据结构来存储规则。这在下面解释。 循环遍历 Java 程序中的每个“用户组”XML 节点,创建映射实现,您可以使用 HashMap,键 - “职员”值将是定义“规则”的 POJO bean

例如,这里是您的“规则”类 -

 public class Rules {

    private String ruleName;
    private int maxLength;
    private int minLength;

    public String getRuleName() {
        return ruleName;
    }

    public void setRuleName(String ruleName) {
        this.ruleName = ruleName;
    }

    public int getMinLength() {
        return minLength;
    }

    public void setMinLength(int minLength) {
        this.minLength = minLength;
    }

    public void setMaxLength(int maxLength) {
        this.maxLength = maxLength;
    }

    public int getMaxLength() {
        return maxLength;
    }
}

现在您可以在程序中的任何地方使用此 HashMap 来实现规则。似乎您需要在 UI 上实施规则。在这种情况下,我建议使用已建立的框架,如 Struts、Spring 或等效框架。

希望这能给你一个良好的开端;)

【讨论】:

    【解决方案2】:

    简单的答案:使用带有定义命名空间的 XML 模式。这样,每个用户组类型都可以定义该节点的结构。将其设置为属性并不是最有效的方法。今晚稍后我可以详细说明如何将 XSD 与命名空间一起使用,以便您可以创建一个文档,其中包含在不同命名空间中指定的“不同”用户组节点,每个实体都可以毫无问题地验证和使用。我没有时间展示一个例子,但我发现了这个:Creating an XML document using namespaces in Java

    我能想到的最简单的解释是“表”的定义。对于家具店,“桌子”实体可能具有圆形或方形表面,最有可能有 4 条腿等。但“桌子”对于其他群体可能意味着完全不同的东西。以你的 XML 为例,它会是这样的:

    <root>
     <sale:user-group xmlns:sale="SOME_URL">
        <some structure and rules>
     </sale:user-group>   
     <clerk:user-group xmlns:clerk="SOME_OTHER_URL">
        <different structure and rules>
     </clerk:user-group>
    </root>
    

    我提供的链接应该可以回答您的问题。如果没有,我今晚会回来给你看一个可能适合你的简单 XSD。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多