private void ReplaceItemIdsWithDna(XmlElement avatarNode) { if (avatarNode == null) { throw new ArgumentNullException("avatarNode"); } if (HasResolvedAssets(avatarNode)) { return; } XmlDocument avatarXmlDoc = avatarNode.OwnerDocument; List <ItemId> avatarItemIds; if (AvatarXmlUtil.GetItemIdsFromAvatarXmlNode(avatarNode, out avatarItemIds)) { XmlDocument assetsXml = mServerStateMachine.ServerAssetRepository.GetXmlDna(avatarItemIds); XmlNode dnaNode = avatarNode.SelectSingleNode("AvatarDna"); if (dnaNode == null) { throw new Exception("avatarNode is not in the expected format.\n" + avatarNode.OuterXml); } dnaNode.RemoveAll(); dnaNode.AppendChild(avatarXmlDoc.ImportNode(assetsXml.SelectSingleNode("//Items"), true)); } else { XmlNode errorNode = avatarXmlDoc.CreateElement("Error"); errorNode.InnerText = "avatarNode does not have the expected format"; avatarNode.AppendChild(errorNode); } }