Recently I needed to process an xml fragment using .Net's XmlReader class. This worked fine until the fragment contained a reference to a namespace when it started throwing undeclared namespace exceptions. In my case the namespace was xmlmime which is not included in the default namespace manager.
After searching the web for examples I found that there was a general lack of examples which use XmlReader. Mostly they use XmlTextReader which for various reasons I was unable to use in the project I was working on. Below is an example snippet of code which show how to overcome the undeclared namespace exception I was getting when trying to read the fragment.
byte[] xmlBytes = System.Text.Encoding.UTF8.GetBytes(xmlString); MemoryStream stream = new MemoryStream(xmlBytes, false); // Create the namespace required to process configuration xml objects XmlNamespaceManager namespaceManager = new XmlNamespaceManager(new NameTable()); namespaceManager.AddNamespace("xmlmime", "http://www.w3.org/2004/11/xmlmime"); namespaceManager.AddNamespace("another", "urn:something"); // Create the context required to parse configuration fragments var context = new XmlParserContext(null, namespaceManager, null, XmlSpace.Default); // Create the xml reader with the required context to parse a configuration object var xmlReader = XmlReader.Create(stream, null, context); while (xmlReader.Read()) { switch (xmlReader.NodeType) { case XmlNodeType.Element: // process element break; } }
No comments:
Post a Comment