in google-http-client-xml/src/main/java/com/google/api/client/xml/XmlNamespaceDictionary.java [364:408]
void serialize(XmlSerializer serializer, String elementNamespaceUri, String elementLocalName)
throws IOException {
boolean errorOnUnknown = this.errorOnUnknown;
if (elementLocalName == null) {
if (errorOnUnknown) {
throw new IllegalArgumentException("XML name not specified");
}
elementLocalName = "unknownName";
}
serializer.startTag(elementNamespaceUri, elementLocalName);
// attributes
int num = attributeNames.size();
for (int i = 0; i < num; i++) {
String attributeName = attributeNames.get(i);
int colon = attributeName.indexOf(':');
String attributeLocalName = attributeName.substring(colon + 1);
String attributeNamespaceUri = colon == -1 ? null : getNamespaceUriForAliasHandlingUnknown(
errorOnUnknown, attributeName.substring(0, colon));
serializer.attribute(
attributeNamespaceUri, attributeLocalName, toSerializedValue(attributeValues.get(i)));
}
// text
if (textValue != null) {
serializer.text(toSerializedValue(textValue));
}
// elements
num = subElementNames.size();
for (int i = 0; i < num; i++) {
Object subElementValue = subElementValues.get(i);
String subElementName = subElementNames.get(i);
Class<? extends Object> valueClass = subElementValue.getClass();
if (subElementValue instanceof Iterable<?> || valueClass.isArray()) {
for (Object subElement : Types.iterableOf(subElementValue)) {
if (subElement != null && !Data.isNull(subElement)) {
new ElementSerializer(subElement, errorOnUnknown).serialize(
serializer, subElementName);
}
}
} else {
new ElementSerializer(subElementValue, errorOnUnknown).serialize(
serializer, subElementName);
}
}
serializer.endTag(elementNamespaceUri, elementLocalName);
}