
代码如上,圈住的那个地方,是只获取到一个层级下边的,如何写可以循环获取同意层级下边的内容,,,,谢谢
1条回答 默认 最新
你知我知皆知 2024-08-07 02:31关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
要实现对LDAP目录中多个层次的数据进行迭代访问,你需要使用Java的
javax.naming.directory.SearchResult类。这个类提供了一个方法next()用于遍历结果集中的元素,并且提供了几种方式来控制如何处理这些元素。以下是修改后的代码示例:
import javax.naming.directory.Attributes; import javax.naming.directory.DirContext; /** * Example of how to iterate over all attributes in the LDAP search result. */ public class LdapIterator { public static void main(String[] args) { try (DirContext ctx = new InitialDirContext(env)) { // ... 初始化上下文和搜索控制项 NamingEnumeration<?> answer = ctx.search("ou=inke", "objectclass", null); while (answer.hasMoreElements()) { Attributes attrs = (Attributes) answer.next(); System.out.println(attrs); } } catch (NamingException e) { e.printStackTrace(); } } private static final String env = "test"; private static final DirContext.ContextFactory envFactory = new InitialDirContext().getInitialContextFactory(); }在这个例子中,我们创建了一个
LdapIterator类,它包含一个main()方法。在main()方法中,我们首先初始化了一个DirContext对象(通过构造函数new InitialDirContext(env))。然后,我们调用search()方法并传入了要搜索的路径、对象类别和null作为过滤器。这样,search()就会返回一个NamingEnumeration,我们可以使用它的hasMoreElements()方法来检查是否有更多的结果,或者直接调用next()`方法来获取下一个结果。对于每个结果,我们都可以调用
getAttribute()方法来获取属性,然后打印出来。请注意,这只是一个基本的例子,实际使用时可能需要根据你的具体需求进行调整。例如,你可能需要处理错误的情况,比如没有找到匹配的条目等。解决 无用评论 打赏 举报