public string[] Update(XmlDocument document, ISerializerHost host = null)
        {
            if (document == null)
            {
                throw new ArgumentNullException("document");
            }
            Dictionary <string, ExtensionNamespaceCounter> dictionary = (host == null) ? new Dictionary <string, ExtensionNamespaceCounter>() : host.GetExtensionNamespaces().ToDictionary((ExtensionNamespace v) => v.Namespace, (ExtensionNamespace v) => new ExtensionNamespaceCounter(v));
            XmlElement documentElement = document.DocumentElement;

            if (documentElement == null)
            {
                throw new InvalidOperationException("Document contains no elements");
            }
            this.AddMustUnderstandNamespaces(dictionary, documentElement);
            this.AddXmlnsNamespaces(dictionary, documentElement);
            this.UpdateLocalNames(documentElement, dictionary);
            ExtensionNamespace[] array = (from v in dictionary
                                          where v.Value.Count > 0
                                          select v.Value.ExtensionNamespace).ToArray();
            NamespaceUpdater.UpdateRootNamespaces(array, documentElement);
            string[] array2 = (from v in array
                               where v.MustUnderstand
                               select v.LocalName).ToArray();
            string text = string.Join(" ", array2);

            if (text.Any())
            {
                documentElement.SetAttribute("MustUnderstand", text);
            }
            else
            {
                documentElement.RemoveAttribute("MustUnderstand");
            }
            return(array2);
        }
 protected RdlReaderWriterBase(RdlSerializerSettings settings)
 {
     m_settings = settings;
     if (m_settings != null)
     {
         m_host         = m_settings.Host;
         m_xmlOverrides = m_settings.XmlAttributeOverrides;
     }
 }
Ejemplo n.º 3
0
        public string[] Update(XmlWriter writer, string xml, ISerializerHost host = null)
        {
            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.LoadXml(xml);
            string[] result = new NamespaceUpdater().Update(xmlDocument, host);
            xmlDocument.Save(writer);
            return(result);
        }