private void MoveNextInXml(XmlDataNode dataNode) { if (IsXmlDataNode) { xmlNodeReader.Read(); if (xmlNodeReader.Depth == 0) { internalNodeType = ExtensionDataNodeType.EndElement; xmlNodeReader = null; } } else { internalNodeType = ExtensionDataNodeType.Xml; if (element == null) { element = nextElement; } else { PushElement(); } XmlNode wrapperElement = XmlObjectSerializerReadContext.CreateWrapperXmlElement(dataNode.OwnerDocument, dataNode.XmlAttributes, dataNode.XmlChildNodes, element.prefix, element.localName, element.ns); for (int i = 0; i < element.attributeCount; i++) { AttributeData a = element.attributes[i]; XmlAttribute xmlAttr = dataNode.OwnerDocument.CreateAttribute(a.prefix, a.localName, a.ns); xmlAttr.Value = a.value; wrapperElement.Attributes.Append(xmlAttr); } xmlNodeReader = new XmlNodeReader(wrapperElement); xmlNodeReader.Read(); } }