internal static string AddFingerprintTextProcessor(XDocument rulePackXDoc, Fingerprint fingerprint) { ArgumentValidator.ThrowIfNull("rulePackXDoc", rulePackXDoc); ArgumentValidator.ThrowIfNull("fingerprint", fingerprint); XElement xelement = rulePackXDoc.Descendants(XmlProcessingUtils.GetMceNsQualifiedNodeName("LocalizedStrings")).FirstOrDefault <XElement>(); if (xelement == null) { throw new ClassificationRuleCollectionInvalidObjectException(Strings.ClassificationRuleCollectionInvalidObject); } XElement fingerprintProcessor = XmlProcessingUtils.GetFingerprintProcessor(rulePackXDoc, fingerprint); if (fingerprintProcessor == null) { fingerprint.Identity = Guid.NewGuid().ToString(); fingerprint.ActualDescription = fingerprint.Description; xelement.AddBeforeSelf(fingerprint.ToXElement()); } else { fingerprint.Identity = XmlProcessingUtils.GetAttributeValue(fingerprintProcessor, "id"); string attributeValue = XmlProcessingUtils.GetAttributeValue(fingerprintProcessor, "description"); if (string.IsNullOrEmpty(attributeValue) && !string.IsNullOrEmpty(fingerprint.Description)) { fingerprintProcessor.SetAttributeValue("description", fingerprint.Description); fingerprint.ActualDescription = fingerprint.Description; } else { fingerprint.ActualDescription = attributeValue; } } return(fingerprint.Identity); }