如果预定义的模式 //authorize 与以下 xml 片段中的元素匹配,我将使用 dom4j 的规则 api 来触发操作。
<authorize role_required="admin">
<node title="node which is visible only to admin" path="" >
<authorize role_required="admin">
<node title="node which is visible only to admin" path=""/>
</authorize>
<authorize role_required="admin">
<node title="node which is visible only to admin" path="">
<authorize role_required="admin">
</authorize>
<node title="node which is visible only to admin" path=""/>
</node>
</authorize>
</node>
</authorize>
<authorize role_deny="admin">
<node title="Node which is not visible to admin" path=""/>
</authorize>
不幸的是,它似乎不适用于嵌套元素,只能找到第一级的授权元素。该动作仅触发两次,但有 5 个授权元素。有人知道如何解决这个问题吗?提前致谢。
我尝试将授权标签与以下规则匹配:
Rule authorizationRule = new Rule();
authorizationRule.setPattern( DocumentHelper.createPattern( "//authorize" ) );
authorizationRule.setAction( new AuthorizationRule() );
this.stylesheet = new Stylesheet();
this.stylesheet.addRule(authorizationRule);
this.stylesheet.run(document);
该规则在第一层的元素上匹配两次。我用 document.selectNodes 方法交叉检查了 XPath 模式,得到了所有五个元素。