java中的XML基础数据验证规则

时间:2014-11-13 18:54:42

标签: java

您好我是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东西来实现上述规则。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

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

在阅读XML时,您可以创建一个数据结构来存储规则。这将在下面解释。 循环遍历Java程序中的每个“用户组”XML节点,创建一个map实现,可以使用HashMap,带有键 - “clerk”值将是一个定义“规则”的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或等效框架。

希望这会给你一个开端;)

答案 1 :(得分:0)

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

我能提出的最简单的解释是&#34; table&#34;的定义。对于家具店,桌子&#34;实体可能有一个圆形或方形的表面,最有可能是4条腿等。但是表格是#34;表格。可能意味着其他一些群体完全不同。以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。