@Override
    public JSite load() {
        if (loaded) return this;

        String body = null;
        try {
            body = JHttpClientUtil.postText(
                    context.getUrl() + JHttpClientUtil.Sites.URL,
                    JHttpClientUtil.Sites.GetSite.replace("{SiteUrl}", context.getUrl()),
                    JHttpClientClient.getWebserviceSopa()
            );
        } catch (Exception ex) {
            throw new RuntimeException(ex);
        }

        Node listElement;
        Document document;
        try {
            document = DocumentBuilderFactory
                    .newInstance()
                    .newDocumentBuilder()
                    .parse(new ByteArrayInputStream(body.getBytes()));
        } catch (Exception ex) {
            throw new RuntimeException(ex);
        }

        NodeList nodes = document.getElementsByTagName("GetSiteResult");
        if (nodes.getLength() > 0)
            listElement = nodes.item(0).getFirstChild();
        else
            return null;

        Pattern pattern = Pattern.compile("(\\w+)=\\\"([^\\\"]+)\\\"");
        Matcher matcher = pattern.matcher(listElement.getNodeValue());
        int start = 0;
        while (matcher.find(start)) {
            attributes.put(matcher.group(1), new JContentValue(matcher.group(2)));
            start = matcher.end();
        }

        loaded = true;
        return this;
    }