use of org.apache.xerces.xs.XSAttributeDeclaration in project iaf by ibissource.
the class ToXml method handleElement.
// @Override
public void handleElement(XSElementDeclaration elementDeclaration, N node) throws SAXException {
String name = elementDeclaration.getName();
String elementNamespace = elementDeclaration.getNamespace();
String qname = getQName(elementNamespace, name);
if (DEBUG)
log.debug("handleNode() name [" + name + "] elementNamespace [" + elementNamespace + "]");
newLine();
AttributesImpl attributes = new AttributesImpl();
Map<String, String> nodeAttributes = getAttributes(elementDeclaration, node);
if (DEBUG)
log.debug("node [" + name + "] search for attributeDeclaration");
XSTypeDefinition typeDefinition = elementDeclaration.getTypeDefinition();
XSObjectList attributeUses = getAttributeUses(typeDefinition);
if (attributeUses == null || attributeUses.getLength() == 0) {
if (nodeAttributes != null && nodeAttributes.size() > 0) {
log.warn("node [" + name + "] found [" + nodeAttributes.size() + "] attributes, but no declared AttributeUses");
} else {
if (DEBUG)
log.debug("node [" + name + "] no attributeUses, no attributes");
}
} else {
if (nodeAttributes == null || nodeAttributes.isEmpty()) {
log.warn("node [" + name + "] declared [" + attributeUses.getLength() + "] attributes, but no attributes found");
} else {
for (int i = 0; i < attributeUses.getLength(); i++) {
XSAttributeUse attributeUse = (XSAttributeUse) attributeUses.item(i);
// if (DEBUG) log.debug("startElement ["+localName+"] attributeUse ["+ToStringBuilder.reflectionToString(attributeUse)+"]");
XSAttributeDeclaration attributeDeclaration = attributeUse.getAttrDeclaration();
if (DEBUG)
log.debug("node [" + name + "] attributeDeclaration [" + ToStringBuilder.reflectionToString(attributeDeclaration) + "]");
XSSimpleTypeDefinition attTypeDefinition = attributeDeclaration.getTypeDefinition();
if (DEBUG)
log.debug("node [" + name + "] attTypeDefinition [" + ToStringBuilder.reflectionToString(attTypeDefinition) + "]");
String attName = attributeDeclaration.getName();
if (nodeAttributes.containsKey(attName)) {
String value = nodeAttributes.remove(attName);
String uri = attributeDeclaration.getNamespace();
String attqname = getQName(uri, attName);
String type = null;
if (DEBUG)
log.debug("node [" + name + "] adding attribute [" + attName + "] value [" + value + "]");
attributes.addAttribute(uri, attName, attqname, type, value);
}
}
}
}
if (isNil(elementDeclaration, node)) {
validatorHandler.startPrefixMapping(XSI_PREFIX_MAPPING, XML_SCHEMA_INSTANCE_NAMESPACE);
attributes.addAttribute(XML_SCHEMA_INSTANCE_NAMESPACE, XML_SCHEMA_NIL_ATTRIBUTE, XSI_PREFIX_MAPPING + ":" + XML_SCHEMA_NIL_ATTRIBUTE, "xs:boolean", "true");
validatorHandler.startElement(elementNamespace, name, qname, attributes);
validatorHandler.endElement(elementNamespace, name, qname);
validatorHandler.endPrefixMapping(XSI_PREFIX_MAPPING);
} else {
validatorHandler.startElement(elementNamespace, name, qname, attributes);
handleElementContents(elementDeclaration, node);
validatorHandler.endElement(elementNamespace, name, qname);
}
// if (createdPrefix!=null) {
// validatorHandler.endPrefixMapping(createdPrefix);
// }
}
use of org.apache.xerces.xs.XSAttributeDeclaration in project iaf by ibissource.
the class XmlTo method startElement.
@Override
public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
boolean xmlArrayContainer = aligner.isParentOfSingleMultipleOccurringChildElement();
boolean repeatedElement = aligner.isMultipleOccurringChildInParentElement(localName);
XSTypeDefinition typeDefinition = aligner.getTypeDefinition();
if (!localName.equals(topElement)) {
if (topElement != null) {
if (DEBUG)
log.debug("endElementGroup [" + topElement + "]");
documentContainer.endElementGroup(topElement);
}
if (DEBUG)
log.debug("startElementGroup [" + localName + "]");
documentContainer.startElementGroup(localName, xmlArrayContainer, repeatedElement, typeDefinition);
topElement = localName;
}
element.push(topElement);
topElement = null;
if (DEBUG)
log.debug("startElement [" + localName + "] xml array container [" + aligner.isParentOfSingleMultipleOccurringChildElement() + "] repeated element [" + aligner.isMultipleOccurringChildInParentElement(localName) + "]");
documentContainer.startElement(localName, xmlArrayContainer, repeatedElement, typeDefinition);
super.startElement(uri, localName, qName, atts);
if (aligner.isNil(atts)) {
documentContainer.setNull();
} else {
if (writeAttributes) {
XSObjectList attributeUses = aligner.getAttributeUses();
if (attributeUses == null) {
if (atts.getLength() > 0) {
log.warn("found [" + atts.getLength() + "] attributes, but no declared AttributeUses");
}
} else {
for (int i = 0; i < attributeUses.getLength(); i++) {
XSAttributeUse attributeUse = (XSAttributeUse) attributeUses.item(i);
XSAttributeDeclaration attributeDeclaration = attributeUse.getAttrDeclaration();
XSSimpleTypeDefinition attTypeDefinition = attributeDeclaration.getTypeDefinition();
String attName = attributeDeclaration.getName();
String attNS = attributeDeclaration.getNamespace();
if (DEBUG)
log.debug("startElement [" + localName + "] searching attribute [" + attNS + ":" + attName + "]");
int attIndex = attNS != null ? atts.getIndex(attNS, attName) : atts.getIndex(attName);
if (attIndex >= 0) {
String value = atts.getValue(attIndex);
if (DEBUG)
log.debug("startElement [" + localName + "] attribute [" + attNS + ":" + attName + "] value [" + value + "]");
if (StringUtils.isNotEmpty(value)) {
documentContainer.setAttribute(attName, value, attTypeDefinition);
}
}
}
}
}
}
}
Aggregations