in src/main/java/org/apache/ddlutils/io/DataReader.java [392:461]
private void readColumnSubElement(XMLStreamReader xmlReader, Map data) throws XMLStreamException, DdlUtilsXMLException
{
QName elemQName = xmlReader.getName();
Map attributes = new HashMap();
boolean usesBase64 = false;
for (int idx = 0; idx < xmlReader.getAttributeCount(); idx++)
{
QName attrQName = xmlReader.getAttributeName(idx);
String value = xmlReader.getAttributeValue(idx);
if (DatabaseIO.BASE64_ATTR_NAME.equals(attrQName.getLocalPart()))
{
if ("true".equalsIgnoreCase(value))
{
usesBase64 = true;
}
}
else
{
attributes.put(attrQName.getLocalPart(), value);
}
}
int eventType = XMLStreamReader.START_ELEMENT;
StringBuffer content = new StringBuffer();
while (eventType != XMLStreamReader.END_ELEMENT)
{
eventType = xmlReader.next();
if (eventType == XMLStreamReader.START_ELEMENT)
{
readColumnDataSubElement(xmlReader, attributes);
}
else if ((eventType == XMLStreamReader.CHARACTERS) ||
(eventType == XMLStreamReader.CDATA) ||
(eventType == XMLStreamReader.SPACE) ||
(eventType == XMLStreamReader.ENTITY_REFERENCE))
{
content.append(xmlReader.getText());
}
}
String value = content.toString().trim();
if (usesBase64)
{
value = new String(Base64.decodeBase64(value.getBytes()));
}
String name = elemQName.getLocalPart();
if ("table-name".equals(name))
{
data.put("table-name", value);
}
else
{
if ("column".equals(name))
{
name = (String)attributes.get("column-name");
}
if (attributes.containsKey("column-value"))
{
value = (String)attributes.get("column-value");
}
data.put(name, value);
}
consumeRestOfElement(xmlReader);
}