Ejemplo n.º 1
0
        public override Payload Apply(Payload target)
        {
            var xml = target.GetString();

            _xmlDoc = new XmlDocument();
            _mgr    = new XmlNamespaceManager(_xmlDoc.NameTable);

            foreach (var kv in _namespaces)
            {
                _mgr.AddNamespace(kv.Key, kv.Value);
            }

            _xmlDoc.LoadXml(xml);

            FieldMaskingRules.ForEach(rule =>
            {
                if (rule != null)
                {
                    var nodes = GetNodes(rule.Path);
                    if (nodes != null && nodes.Count > 0)
                    {
                        foreach (XmlNode node in nodes)
                        {
                            var value  = node.Value.Trim();
                            node.Value = rule.Mask != null ? rule.Mask.Mask(value) : Masks.DefaultMask.Mask(value);
                        }
                    }
                }
            });

            using (var stringWriter = new StringWriter())
            {
                using (var xmlTextWriter = XmlWriter.Create(stringWriter))
                {
                    _xmlDoc.WriteTo(xmlTextWriter);
                    xmlTextWriter.Flush();
                    return(new Payload(stringWriter.GetStringBuilder().ToString()));
                }
            }
        }