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; } }
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); }