public XDocument ConvertCheckRunLaunchToCheckRunArtifact(XDocument crl) { DataValidation.Instance.ValidateCheckRunLaunch(crl); XDocument craXDocumentResult = new XDocument(); // Transform CRL to CRA using (XmlWriter xmlWriter = craXDocumentResult.CreateWriter()) { CheckRunTransforms checkRunTransforms = new CheckRunTransforms(); XslCompiledTransform xslTransform = checkRunTransforms.CrlToCraTransform; xslTransform.Transform(crl.CreateReader(), xmlWriter); } // Remove all the extra whitespace text nodes. This works around what seems to be a bug in the XSL implementation var nodeIterator = from node in craXDocumentResult.Root.DescendantNodes() where (node.NodeType == XmlNodeType.Text) select node; List <XNode> textNodesToRemove = new List <XNode>(); foreach (XNode textNode in nodeIterator) { textNodesToRemove.Add(textNode); } foreach (XNode textNode in textNodesToRemove) { textNode.Remove(); } return(craXDocumentResult); }
/// <summary> /// Accepts and validates CheckRunLaunch XDocument /// </summary> /// <param name="checkRunLaunchXDocument"></param> /// <returns></returns> public void InitializeCheckRunFromCheckRunLaunch(XDocument checkRunLaunchXDocument) { DataValidation.Instance.ValidateCheckRunLaunch(checkRunLaunchXDocument); CheckRunTransforms checkRunTransforms = new CheckRunTransforms(); XDocument checkRunArtifact = checkRunTransforms.ConvertCheckRunLaunchToCheckRunArtifact(checkRunLaunchXDocument); this.m_CheckRunArtifact = new CheckRunArtifact(checkRunArtifact); }