public virtual void Parse(XMLStreamReader xtr, BpmnModel model) { model.TargetNamespace = xtr.GetAttributeValue(BpmnXMLConstants.TARGET_NAMESPACE_ATTRIBUTE); for (int i = 0; i < xtr.NamespaceCount; i++) { string prefix = xtr.GetNamespacePrefix(i); if (!string.IsNullOrWhiteSpace(prefix)) { model.AddNamespace(prefix, xtr.GetNamespaceURI(i)); } } for (int i = 0; i < xtr.AttributeCount; i++) { var attr = xtr.element.Attributes().ElementAt(i); ExtensionAttribute extensionAttribute = new ExtensionAttribute { Name = attr.Name.LocalName, Value = attr.Value }; if (!string.IsNullOrWhiteSpace(attr.Name.NamespaceName)) { extensionAttribute.Namespace = attr.Name.NamespaceName; } if (!string.IsNullOrWhiteSpace(xtr.element.GetPrefixOfNamespace(attr.Name.Namespace))) { extensionAttribute.NamespacePrefix = xtr.element.GetPrefixOfNamespace(attr.Name.Namespace); } if (!BpmnXMLUtil.IsBlacklisted(extensionAttribute, defaultAttributes)) { model.AddDefinitionsAttribute(extensionAttribute); } } }