ArrayList<Attribute> attributesList = new ArrayList<Attribute>(jsonObject.values().size());
Iterator<Entry<String, JsonValue>> iter = jsonObject.entrySet().iterator();
while (iter.hasNext()) {
Entry<String, JsonValue> nextEntry = iter.next();
JsonValue nextValue = nextEntry.getValue();
String attributeLocalName = nextEntry.getKey();
if (attributePrefix != null) {
if (attributeLocalName.startsWith(attributePrefix)) {
attributeLocalName = attributeLocalName.substring(attributePrefix.length());
} else {
break;
}
}
String uri = Constants.EMPTY_STRING;
if (namespaceAware && namespaces != null) {
if (attributeLocalName.length() > 2) {
String prefix = Constants.EMPTY_STRING;
int nsIndex = attributeLocalName.indexOf(namespaceSeparator, 1);
if (nsIndex > -1) {
prefix = attributeLocalName.substring(0, nsIndex);
}
uri = namespaces.resolveNamespacePrefix(prefix);
if (uri == null) {
uri = namespaces.getDefaultNamespaceURI();
} else {
attributeLocalName = attributeLocalName.substring(nsIndex + 1);
}
} else {
uri = namespaces.getDefaultNamespaceURI();
}
}
if (nextValue.getValueType() == ValueType.ARRAY) {
JsonArray jsonArray = (JsonArray) nextValue;
if (jsonArray.size() == 0) {
attributesList.add(new Attribute(uri, attributeLocalName, attributeLocalName, ""));
}
for (int y = 0; y < jsonArray.size(); y++) {
JsonValue nextChildValue = jsonArray.get(y);
addSimpleAttribute(attributesList, uri, attributeLocalName, nextChildValue);
}
} else {
addSimpleAttribute(attributesList, uri, attributeLocalName, nextValue);
}