2

有没有办法从 a 解析属性String?例如,如果我有以下内容:

CN=Doe, John: Markets (LDN),OU=Users,DC=FOOCORP,DC=COM

并且想把它变成一个Attributes或一组Attribute-s,是否有一个可以使用的实用程序类来完成所有正确的转义,或者我应该只是敲击我自己的一些实现?

我有以下代码:

    String cnBase = "CN=Doe\\, John: Markets (LDN),OU=Users,DC=FOOCORP,DC=COM";

    StringTokenizer st = new StringTokenizer(cnBase, "=");

    Attributes attributes = new BasicAttributes();

    String attributeId = null;
    String attributeValue = null;
    String previousToken = null;

    while (st.hasMoreTokens())
    {
        String token = st.nextToken();

        if (previousToken == null && attributeId == null)
        {
            // Get the attribute's id
            attributeId = token;
            continue;
        }

        if (attributeId != null)
        {
            if (token.contains(","))
            {
                attributeValue = token.substring(0, token.lastIndexOf(","));
            }
            else
            {
                attributeValue = token;
            }
        }

        if (attributeId != null && attributeValue != null)
        {
            // Add a new Attribute to the attributes object
            Attribute attribute = new BasicAttribute(attributeId, attributeValue);
            attributes.put(attribute);

            System.out.println(attribute.toString());

            attributeId = token.substring(token.lastIndexOf(",") + 1, token.length());
            attributeValue = null;
        }

        previousToken = token;
    }

我认为可以以更智能的方式重写。

4

1 回答 1

2

JNDI 有一个名为LdapName(misnamed) 的类,它表示一个专有名称。它基于过时的 RFC,但可能令人满意。

也可以看看

于 2013-11-06T20:31:48.540 回答