BizTalk Utilities CV ,   Jobs ,   Code library
 
Go to the front page to continue learning about XML or select below:

Contents

ReBlogger Contents

Previous posts in .NET XML, System.XML

 
 
Page 11632 of 19640

Creating documents over a subtree

Blogger : XmlTeams WebLog
All posts : All posts by XmlTeams WebLog
Category : .NET XML, System.XML
Blogged date : 2006 Jun 16

After my TLC session on XML Tools in Visual Studio a gentleman came up to me and asked me a question. He said that he deals with XML coming over the pipe and their usually isn’t an end-of-file character at the end of his email document. He was trying to figure out how he can create a DOM over the valid XML. He was using one reader to do this. I knew that he could use the subtree reader but I didn’t have any code handy to give him. So I played around a bit and here is what I came up with:

        public void TestSubTreeReader()

        {

            XmlReaderSettings readerSettings = new XmlReaderSettings();

            readerSettings.ConformanceLevel = ConformanceLevel.Document;

           

            // this is the XML being used:

            /*

              <?xml version="1.0" encoding="utf-8" ?>

                <root>

                  <a> </a>

                  <b attribute="adkj">

                    text 1

                    <c> text 2 </c>

                  </b>

                  <d> text 3</d>

                </root>

                <outsideelement/>

             */

 

            string srcfile = "sample.xml";

            XmlReader xReader = XmlReader.Create(srcFile, readerSettings);

 

            while (xReader.Read())

            {

                if (xReader.Name == "root")

                {

                    XmlReader subTreeReader = xReader.ReadSubtree();

                    XmlDocument doc = new XmlDocument();

                    doc.Load(subTreeReader);

                    return;

                }

            }

        }

 

I approximated his scenario by using an XML file with two elements at the root level (which as we all know is not well-formed). I wanted to make sure that I create a DOM only on top of the “root” element.

 

In the while loop above I read the XML Declaration and eat it (I can see you wanting to use it for something interesting, but in my scenario, I do nothing with it). I then check to see if my reader is on the “root” node, if it is I create a new reader that is going to start at my root node and then read until it reaches the end root node.

 

I was worried that the subtree reader would not return the initial root node and would eat the end root node, but it doesn’t. The ReadSubtree() method returns a reader over the current node and all of it’s descendants.

 

So, there it is, I hope it helps.

 

Basking in the sun (or will be right after I post this) in beautiful Boston

Neetu Rajpal


Read comments or post a reply to : Creating documents over a subtree
Page 11632 of 19640

Newest posts
 

    Email TopXML