Frequently Asked Questions on XML in .NET - Part 2

This is the next post in our ongoing FAQ series. See the original post here.

Q2: Conformance Level – Fragment

There are times when you want to work with a piece of XML that is not a fully conformant xml document; an example of this is when the XML does not have one root element. This type of XML is called an XML fragment. Here is an example of an XML fragment:

“<foo></foo><bar></bar>”

If this snippet of XML is used as the source for to the XmlReader, the following exception will occur:

“There are multiple root elements. Line X, position Y.”

This is a good exception message and tells the user exactly what the problem is: more than one root element is not allowed in an XML document. But what happens if you really want to work with XML of this form? A flag in the XmlReaderSettings class is provided for exactly this situation: XmlReaderSettings.ConformanceLevel.

Code snippet to correctly read the XML fragment:

 string xmlFragmentStr = "<foo></foo><bar></bar>";
//create a reader settings objects and set the conformance level to 
    fragment
XmlReaderSettings xrs = new XmlReaderSettings();
xrs.ConformanceLevel = ConformanceLevel.Fragment;
//create a reader using the reader settings
XmlReader r = XmlReader.Create(new StringReader(xmlFragmentStr), 
     xrs);
r.Read();

Shayne Burgess

Program Manager | Data Programmability