*  @since 0.25
     */
    protected void populateNamespaceCache() throws IOException
    {
        String line = fetch(query + "meta=siteinfo&siprop=namespaces", "namespace");
        namespaces = new HashMap<String, Integer>(30);
        
        // xml form: <ns id="-2" ... >Media</ns> or <ns id="0" ... />
        for (int a = line.indexOf("<ns "); a > 0; a = line.indexOf("<ns ", ++a))
        {
            String ns = parseAttribute(line, "id", a);
            int b = line.indexOf('>', a) + 1;
            int c = line.indexOf('<', b);
            namespaces.put(normalize(decode(line.substring(b, c))), new Integer(ns));
        }

        log(Level.INFO, "Successfully retrieved namespace list (" + (namespaces.size()) + " namespaces)", "namespace");
     }