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

java中基于XML的数据验证规则,java,Java,您好,我对Java中的XML一无所知。在我最近的项目中,我需要用XML创建验证规则,但问题是不同的用户组可能有不同的规则 比如说 <root> <user-group type="sale"> <parameter-name ="loginName"> <max-length>10</max-length> <min-length>4</min-length> <

您好,我对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>

10
4.
10
4.
16
4.
12
8.
` 
因此,如何编写Java代码来实现上述规则。
提前感谢。

使用一个已知的XML解析器阅读XML。参考

在通读XML时,可以创建一个数据结构来存储规则。下文对此进行解释。 循环遍历Java程序中的每个“用户组”XML节点,创建一个映射实现,您可以使用一个HashMap,键为“clerk”的值将是定义“rule”的POJO bean

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

现在,您可以在程序中的任何位置使用此HashMap来实现这些规则。看起来您需要在UI上实现规则。在这种情况下,我建议使用Struts、Spring或类似的框架


希望这能给你一个开始;)

简单的答案是:使用XML模式定义名称空间。这样,每个用户组类型都可以定义该节点的结构。将其设置为属性并不是最有效的方法。今晚晚些时候,我可以详细介绍如何将XSD与名称空间结合使用,这样您就可以创建一个包含“不同”用户组节点的文档,这些节点在不同的名称空间中指定,每个实体都可以验证和使用,而不会出现任何问题。我没有时间展示一个例子,但我发现:

我能想到的最简单的解释是“表”的定义。对于家具店,“桌子”实体可能有一个圆形或方形的表面,最有可能有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,它可能适合您的情况。

很抱歉,我不知道如何在Java中实现逻辑。欢迎使用StackOverflow!请参阅此页面以帮助我们帮助您:。此外,您的XML无效(
不是有效节点)。您正在解析的是真正的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>