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