示例#1
0
        //[Ignore("XInclude migration in progress.")]
        public void FullLoad()
        {
            XIncludingReader ir = new XIncludingReader(new XmlTextReader(BaseDir + "mainconfig.xml"));

            // Dump for debugging purposes.
            XmlTextWriter tw = new XmlTextWriter(Console.Out);

            tw.WriteNode(ir, false);
            ir = new XIncludingReader(new XmlTextReader(BaseDir + "mainconfig.xml"));

            XmlSerializer   ser     = new GuidancePackageSerializer();
            GuidancePackage package = (GuidancePackage)ser.Deserialize(ir);

            // Check included recipe
            Assert.AreEqual("ReusableRecipe", package.Recipes[0].Name);
            // Check included types in included recipe
            Assert.AreEqual("Page", package.Recipes[0].Types[1].Name);
            // Check included wizard
            Assert.IsNotNull(package.Recipes[0].GatheringServiceData);

            XmlSerializer wzser = new XmlSerializer(typeof(Wizard));
            Wizard        wz    = (Wizard)wzser.Deserialize(new XmlNodeReader(package.Recipes[0].GatheringServiceData.Any));

            Assert.AreEqual("ExistingWizard", wz.Name);
        }
        public void testURLInvocation_XInclude_XIncludingReader()
        {
            // reset the counter
            WebRequest  request  = WebRequest.Create("http://127.0.0.1:5000/reset");
            WebResponse response = request.GetResponse();



            String            filename = "C:/Christopher_Spaeth/code/xml_files_windows/ssrf/url_invocation_xinclude.xml";
            XmlReaderSettings settings = new XmlReaderSettings();
            XmlReader         reader   = XmlReader.Create(filename, settings);
            //XmlDocument xmlDoc = new XmlDocument();
            //xmlDoc.Load(reader);


            //XmlReader r = XmlReader.Create(filename);
            XIncludingReader xir    = new XIncludingReader(reader);
            XmlDocument      xmlDoc = new XmlDocument();

            xmlDoc.Load(xir);
            String content = xmlDoc.DocumentElement.InnerText;

            //check the counter
            request  = WebRequest.Create("http://127.0.0.1:5000/getCounter");
            response = request.GetResponse();
            Stream       dataStream     = response.GetResponseStream();
            StreamReader streamReader   = new StreamReader(dataStream);
            string       responseServer = streamReader.ReadToEnd();

            responseServer = responseServer.Trim();

            Assert.AreEqual("1", responseServer);
        }
示例#3
0
        static void Load(String inputFile)
        {
            Console.WriteLine("Probing " + Path.GetFileName(inputFile));
            String outputFile = Path.ChangeExtension(inputFile, ".xml");

            using (XIncludingReader reader = new XIncludingReader(inputFile)) {
                using (StreamWriter writer = new StreamWriter(outputFile)) {
                    XmlDocument doc = new XmlDocument();
                    doc.Load(reader);

                    // Remove "xml:base attribute"
                    RemoveXmlBase(doc.DocumentElement);

                    doc.Save(writer);

                    XDocument doc2 = ToXDocument(doc);
                    Console.WriteLine(doc2.Elements().Count());

                    //dictionary dictionary = new dictionary(doc2.Root);
                    //Console.WriteLine (dictionary.title);
                }
            }

            using (StreamReader reader = new StreamReader(outputFile)) {
                XmlSerializer serializer = new XmlSerializer(typeof(dictionary));
                dictionary    dict       = (dictionary)serializer.Deserialize(reader);
                Console.WriteLine(dict.title);
            }
        }
示例#4
0
        public void TestXPointerIndentationBug()
        {
            XmlUrlResolver resolver = new XmlUrlResolver();

            resolver.Credentials = CredentialCache.DefaultCredentials;
            XsltSettings xsltSettings = new XsltSettings();

            xsltSettings.EnableDocumentFunction = true;
            XmlReaderSettings settings = new XmlReaderSettings();

            settings.ProhibitDtd = false;
            XmlReader        reader       = XmlReader.Create("../../XInclude/tests/Transform.xsl", settings);
            XIncludingReader xInputReader = new XIncludingReader("../../XInclude/tests/FileA.xml");

            try
            {
                MvpXslTransform processor = new MvpXslTransform(false);
                processor.Load(reader, xsltSettings, resolver);
                //xInputReader.XmlResolver = new XMLBase();
                XmlDocument xInputDoc = new XmlDocument();
                xInputDoc.Load(xInputReader);
                XmlInput     xInput  = new XmlInput(xInputDoc);
                StringWriter stringW = new StringWriter();
                XmlOutput    xOutput = new XmlOutput(stringW);
                processor.Transform(xInput, null, xOutput);
                processor.TemporaryFiles.Delete();
                Assert.AreEqual("<?xml version=\"1.0\" encoding=\"utf-16\"?>NodeA Content", stringW.ToString());
            }
            finally
            {
                reader.Close();
                xInputReader.Close();
            }
        }
示例#5
0
        /// <summary>
        ///   Generates a wrapper.
        /// </summary>
        /// <param name = "prefix">The prefix.</param>
        /// <param name = "inputFile">The input file.</param>
        public void Generate(String prefix, String inputFile)
        {
            String outputFile  = prefix + "." + this.Extension;
            String workingFile = Path.ChangeExtension(inputFile, ".xml");

            if (!File.Exists(inputFile))
            {
                throw new ArgumentException("Input file not found: " + inputFile);
            }

            // Use a XInclude compliant parser to load all the inclusions
            Console.WriteLine("Processing '" + inputFile + "' ...");
            using (XIncludingReader reader = new XIncludingReader(inputFile))
            {
                // Load the definition file
                // All the XInclude extensions will be unfolded
                XmlDocument doc = new XmlDocument();
                doc.Load(reader);

                // Remove "xml:base attribute"
                // This cause error when using XmlSerializer
                RemoveXmlBase(doc.DocumentElement);

                doc.Save(workingFile);

                // Convert the document to a Linq compatible object
                XDocument xDoc = ToXDocument(doc);

                // Output the code
                using (TextWriter writer = new StreamWriter(outputFile))
                {
                    this.Generate(prefix, xDoc, writer);
                }
            }
        }
示例#6
0
        public void ShouldPreserveCDATA()
        {
            string           xml = "<HTML><![CDATA[<img src=\"/_layouts/images/\">]]></HTML>";
            XIncludingReader xir = new XIncludingReader(new StringReader(xml));

            xir.Read();
            Assert.AreEqual("<HTML><![CDATA[<img src=\"/_layouts/images/\">]]></HTML>", xir.ReadOuterXml());
        }
示例#7
0
        //[Ignore("XmlSerialization doesn't work on dynamic AppDomains")]
        public void RecipeLoad()
        {
            XIncludingReader ir  = new XIncludingReader(new XmlTextReader(BaseDir + "recipe.xml"));
            XmlSerializer    ser = new XmlSerializer(typeof(Recipe));
            Recipe           rec = (Recipe)ser.Deserialize(ir);

            // Two types should have been included.
            Assert.AreEqual(2, rec.Types.Length);
        }
示例#8
0
        public void EncodingTest()
        {
            XmlTextReader    r   = new XmlTextReader(new StringReader("<foo/>"));
            XIncludingReader xir = new XIncludingReader(r);

            xir.ExposeTextInclusionsAsCDATA = true;
            xir.MoveToContent();
            Assert.IsTrue(xir.Encoding == UnicodeEncoding.Unicode);
        }
示例#9
0
        public void UnknownParseAttribute()
        {
            XIncludingReader xir = new XIncludingReader("../../XInclude/tests/unknownparseattr.xml");

            while (xir.Read())
            {
                ;
            }
            xir.Close();
        }
示例#10
0
        public void FallbackNotChildOfInclude()
        {
            XIncludingReader xir = new XIncludingReader("../../XInclude/tests/fallbacknotchildinclude.xml");

            while (xir.Read())
            {
                ;
            }
            xir.Close();
        }
示例#11
0
        public void IncludeChildOfInclude()
        {
            XIncludingReader xir = new XIncludingReader("../../XInclude/tests/includechildofinclude.xml");

            while (xir.Read())
            {
                ;
            }
            xir.Close();
        }
示例#12
0
        public void TwoFallbacks()
        {
            XIncludingReader xir = new XIncludingReader("../../XInclude/tests/twofallbacks.xml");

            while (xir.Read())
            {
                ;
            }
            xir.Close();
        }
示例#13
0
        public void NoHrefAndNoXPointerAttributes()
        {
            XIncludingReader xir = new XIncludingReader("../../XInclude/tests/nohref.xml");

            while (xir.Read())
            {
                ;
            }
            xir.Close();
        }
示例#14
0
 /// <summary>
 /// Loads mapping from the embedded resource with particular name.
 /// </summary>
 /// <param name="name"></param>
 /// <returns></returns>
 private static ITextMapping LoadMapping(string name)
 {
     using (var reader = new XIncludingReader(name + ".xml", xmlResolver))
     {
         /// Setting the resolver here according to http://mvp-xml.sourceforge.net/xinclude/#mozTocId795134
         /// Passing as a parameter is also required to resolve the original file
         reader.XmlResolver = xmlResolver;
         return(CreateMapping(XElement.Load(reader)));
     }
 }
示例#15
0
文件: Utils.cs 项目: zanyants/mvp.xml
 public static XmlReader CreateReader(string filename, XmlReaderSettings settings, NXsltOptions options, XmlResolver resolver)
 {
     if (options.ProcessXInclude)
     {
         XIncludingReader xir = new XIncludingReader(filename, (resolver != null && resolver is DTDAllowingResolver)? new XmlUrlResolver() : resolver);
         xir.XmlResolver = resolver;
         return(XmlReader.Create(xir, settings));
     }
     else
     {
         return(XmlReader.Create(filename, settings));
     }
 }
示例#16
0
文件: Utils.cs 项目: zanyants/mvp.xml
 public static XmlReader CreateReader(Stream stream, XmlReaderSettings settings, NXsltOptions options, XmlResolver resolver)
 {
     if (options.ProcessXInclude)
     {
         XIncludingReader xir = new XIncludingReader(Directory.GetCurrentDirectory(), stream, resolver);
         xir.XmlResolver = resolver;
         return(XmlReader.Create(xir, settings));
     }
     else
     {
         return(XmlReader.Create(stream, settings));
     }
 }
示例#17
0
        private static XmlReader ResolveXInclude(string configfile)
        {
            XIncludingReader xir    = new XIncludingReader(configfile);
            MemoryStream     mem    = new MemoryStream();
            XmlWriter        writer = XmlWriter.Create(mem);

            writer.WriteNode(xir, false);
            writer.Flush();

            mem.Position = 0;
            new XmlReaderSettings();
            return(new FixedBaseURIWrappingReader(XmlReader.Create(mem), configfile));
        }
示例#18
0
        public void NoBaseURITest()
        {
            StreamReader sr  = new StreamReader("../../XInclude/tests/document.xml");
            string       xml = sr.ReadToEnd();

            sr.Close();
            XIncludingReader xir = new XIncludingReader(new StringReader(xml));
            XmlTextWriter    w   = new XmlTextWriter(Console.Out);

            while (xir.Read())
            {
                ;
            }
        }
示例#19
0
        public override async Task <Message> HandleMessage(Message msg)
        {
            XmlReader reader;

            if (msg is XMLMessage)
            {
                reader = ((XMLMessage)msg).GetReader();
            }
            else if (msg is IStreamMessage)
            {
                reader = XmlReader.Create(await((IStreamMessage)msg).GetStream());
            }
            else if (msg is IStringMessage)
            {
                reader = XmlReader.Create(new StringReader(((IStringMessage)msg).Value));
            }
            else
            {
                return(null);
            }

            return(await Task.Run <Message>(() =>
            {
                try
                {
                    // Chain XmlReaders together to handle XIncludes, plugins
                    // and macro expansion.
                    // A pipeline within a pipeline within a pipeline.

                    XIncludingReader includingReader = new XIncludingReader(reader);
                    XPluginReader pluginReader = new XPluginReader(includingReader);
                    XDownstreamReader downstreamReader = new XDownstreamReader(pluginReader);
                    XUpstreamReader upstreamReader = new XUpstreamReader(downstreamReader);

                    var deserialiser = new XMeeplangDeserialiser();
                    var tree = deserialiser.Deserialise(upstreamReader);

                    return new DeserialisedPipeline
                    {
                        DerivedFrom = msg,
                        Tree = tree
                    };
                }
                catch (Exception ex)
                {
                    logger.Error(ex, "{0} thrown when deserialising pipeline definition: {1}", ex.GetType().Name, ex.Message);
                    return null;
                }
            }));
        }
示例#20
0
        public void SerializerTest()
        {
            XmlSerializer ser = new XmlSerializer(typeof(Document));

            using (XIncludingReader r = new XIncludingReader("../../XInclude/tests/Document3.xml"))
            {
                Document doc = (Document)ser.Deserialize(r);
                Assert.IsNotNull(doc);
                Assert.IsTrue(doc.Name == "Foo");
                Assert.IsNotNull(doc.Items);
                Assert.IsTrue(doc.Items.Length == 1);
                Assert.IsTrue(doc.Items[0].Value == "Bar");
            }
        }
示例#21
0
        public void GetAttributeTest()
        {
            XIncludingReader xir = new XIncludingReader("../../XInclude/tests/document.xml");

            while (xir.Read())
            {
                if (xir.NodeType == XmlNodeType.Element && xir.Name == "disclaimer")
                {
                    Assert.IsTrue(xir.AttributeCount == 1);
                    Assert.IsTrue(xir.GetAttribute(0).EndsWith("disclaimer.xml"));
                    Assert.IsTrue(xir[0].EndsWith("disclaimer.xml"));
                }
            }
        }
示例#22
0
        public void DepthTest()
        {
            XIncludingReader xir = new XIncludingReader("../../XInclude/tests/document.xml");
            StringBuilder    sb  = new StringBuilder();

            while (xir.Read())
            {
                Console.WriteLine("{0} | {1} | {2} | {3}",
                                  xir.NodeType, xir.Name, xir.Value, xir.Depth);
                sb.Append(xir.Depth);
            }
            string expected = "00011211111111223221100";

            Assert.AreEqual(sb.ToString(), expected);
        }
示例#23
0
        public void GetAttributeTest2()
        {
            XIncludingReader xir = new XIncludingReader("../../XInclude/tests/document2.xml");

            xir.MakeRelativeBaseUri = false;
            while (xir.Read())
            {
                if (xir.NodeType == XmlNodeType.Element && xir.Name == "disclaimer")
                {
                    Assert.IsTrue(xir.AttributeCount == 1);
                    Assert.IsTrue(xir.GetAttribute(0).EndsWith("tests/disclaimerWithXmlBase.xml"));
                    Assert.IsTrue(xir[0].EndsWith("tests/disclaimerWithXmlBase.xml"));
                }
            }
        }
示例#24
0
        public void LoadNoValidateOrInclusions()
        {
            XIncludingReader  ir = new XIncludingReader(new XmlTextReader(BaseDir + "smallconfig.xml"));
            XmlReaderSettings validateReaderSettings = new XmlReaderSettings();

            // Add the schema to validate against.
            validateReaderSettings.ValidationType = ValidationType.Schema;
            validateReaderSettings.Schemas.Add("http://schemas.microsoft.com/pag/gax-core", "GuidancePackageConfig.xsd");
            XmlReader vr = XmlReader.Create(ir, validateReaderSettings);

            // Deserialize with validating reader.
            XmlSerializer   ser     = new GuidancePackageSerializer();
            GuidancePackage package = (GuidancePackage)ser.Deserialize(vr);
            // Done!
        }
示例#25
0
        private static void ParseListOfFiles(string path)
        {
            var reader = new XIncludingReader(XmlReader.Create(path));

            var document = XDocument.Load(reader);

            var files = document.Root;

            var scriptElements = files.Elements(Script.TAGNAME);

            foreach (var scriptElement in scriptElements)
            {
                Script.Load(scriptElement, scriptElements);
            }
        }
示例#26
0
        //[Ignore("XmlSerialization doesn't work on dynamic AppDomains")]
        public void WizardLoad()
        {
            XIncludingReader ir = new XIncludingReader(BaseDir + "wizard.xml");

            ir.MoveToContent();
            Console.WriteLine(ir.ReadOuterXml());
            ir = new XIncludingReader(BaseDir + "wizard.xml");

            XmlSerializer ser = new XmlSerializer(typeof(Wizard));
            Wizard        wz  = (Wizard)ser.Deserialize(ir);

            ir.Close();

            Assert.IsNotNull(wz.Types);
            Assert.AreEqual(2, wz.Types.Length);
        }
示例#27
0
        public void Load(string fileName)
        {
            string schema = Path.GetDirectoryName(Application.ExecutablePath) + @"\Templates\config.xsd";

            if (System.IO.File.Exists(schema))
            {
                XmlTextReader    r   = new XmlTextReader(fileName);
                XIncludingReader xir = new XIncludingReader(r);
                this.doc.Schemas.Add(null, schema);
                this.doc.Load(xir);
                //this.doc.Validate(null/*this.ValidationEventHandler*/);
            }
            else
            {
                throw new System.IO.FileNotFoundException("Файл config.xsd не найден. Продолжение не возможно.", schema);
            }
        }
示例#28
0
        public MockConfigurationService(string file)
        {
            MemoryStream     mem    = new MemoryStream();
            XIncludingReader xir    = new XIncludingReader(file);
            XmlWriter        writer = XmlWriter.Create(mem);

            writer.WriteNode(xir, false);
            writer.Flush();

            mem.Position = 0;
            XmlReader reader = XmlReader.Create(mem);

            configuration = (Configuration.GuidancePackage)
                            new Configuration.Serialization.GuidancePackageSerializer().Deserialize(reader);

            this.metaData = new Hashtable();
        }
示例#29
0
        public void InnerXmlTest()
        {
            XIncludingReader xir = new XIncludingReader("../../XInclude/tests/document.xml");

            xir.MoveToContent();
            string innerXml = xir.ReadInnerXml();

            xir.Close();
            xir = new XIncludingReader("../../XInclude/tests/document.xml");
            xir.MoveToContent();
            XmlDocument doc = new XmlDocument();

            doc.PreserveWhitespace = true;
            doc.Load(xir);
            string innerXml2 = doc.DocumentElement.InnerXml;

            Assert.AreEqual(innerXml, innerXml2);
        }
示例#30
0
        private static XmlReader ResolveXInclude(XmlReader configReader)
        {
            // Wrap reader in including reader to enable XInclude.
            if (!(configReader is XIncludingReader))
            {
                // Temporarily render included file because of
                // an error in deserialization otherwise.
                MemoryStream     mem    = new MemoryStream();
                XIncludingReader xir    = new XIncludingReader(configReader);
                XmlWriter        writer = XmlWriter.Create(mem);
                writer.WriteNode(xir, false);
                writer.Flush();

                mem.Position = 0;
                return(new FixedBaseURIWrappingReader(XmlReader.Create(mem), configReader.BaseURI));
            }

            return(configReader);
        }
示例#31
0
        public static void Main()
        {
            //String filename = "C:/Christopher_Spaeth/code/xml_files_windows/standard.xml";
            //XmlReader reader = XmlReader.Create(filename);
            //reader.ReadToFollowing("data");
            //String content = reader.ReadElementContentAsString();
            //Console.Write(content);
            //Console.ReadKey();

            String filename = "C:/Christopher_Spaeth/code/xml_files_windows/xinclude.xml";

            //XmlTextReader r = new XmlTextReader(filename);
            XmlReaderSettings settings = new XmlReaderSettings();
            //XmlReader reader = XmlReader.Create(filename, settings);
            //XIncludingReader xir = new XIncludingReader(r);
            XmlReader reader = XmlReader.Create(filename, settings);

            XIncludingReader xincludingReader = new XIncludingReader(reader);

            XmlReader reader2 = XmlReader.Create(xincludingReader, settings);

            reader2.ReadToFollowing("data");

            String content = reader2.ReadInnerXml();
            Console.Write(content);
            Console.ReadKey();

            //XmlReaderSettings settings = new XmlReaderSettings();
            //settings.DtdProcessing = DtdProcessing.Parse;
            // as documented in https://msdn.microsoft.com/en-us/library/system.xml.xmlreadersettings.validationtype%28v=vs.110%29.aspx
            // ValidationFlag ProcessSchemaLocation has to set
            //settings.ValidationFlags = XmlSchemaValidationFlags.ProcessSchemaLocation;
            //settings.ValidationType = ValidationType.Schema;
            //XmlReader reader = XmlReader.Create(filename, settings);
            //reader.ReadToFollowing("data", "http://test.com/attack");

            // XInclude works conveniently with XmlDocument, but not with XMLReader
            //XmlTextReader r = new XmlTextReader(filename);
            //XIncludingReader xir = new XIncludingReader(r);
            ////XmlDocument doc = new XmlDocument();
            ////doc.Load(xir);
            ////String content = doc.DocumentElement.InnerText;

            //xir.ReadToFollowing("data");

            //Console.Write(xir.ReadInnerXml());
            //Console.ReadKey();

            //            string markup =
            //@"<!DOCTYPE Root [
            //  <!ENTITY anEntity ""Expands to more than 30 characters"">
            //  <!ELEMENT Root (#PCDATA)>
            //]>
            //<Root>Content &anEntity;</Root>";

            //XmlReaderSettings settings = new XmlReaderSettings();
            //settings.DtdProcessing = DtdProcessing.Parse;
            //settings.ValidationType = ValidationType.DTD;
            //settings.MaxCharactersFromEntities = 30;

            //            try
            //            {
            //                XmlReader reader = XmlReader.Create(new StringReader(markup), settings);
            //                while (reader.Read()) { }
            //            }
            //            catch (XmlException ex)
            //            {
            //                Console.WriteLine(ex.Message);
            //                Console.ReadKey();
            //            }

            //XmlTextReader textReader = new XmlTextReader(filename);
            //XmlReaderSettings settings = new XmlReaderSettings();
            //settings.ProhibitDtd = false;
            //XmlReader reader = XmlReader.Create(filename, settings);
               // XmlReader reader = XmlReader.Create(filename);

            //reader.ReadToFollowing("data");
            //String content = reader.ReadElementContentAsString();

            //Console.WriteLine(content);
            //Console.ReadKey();
        }
示例#32
0
        /// <summary>
        /// Perform the transformation.
        /// </summary>
        /// <param name="inputFile">Input (XML) file.</param>
        /// <param name="xsltFile">Transformation (XSLT) file.</param>
        /// <param name="outputFile">Output file.</param>
        private void Transform(string inputFile, string xsltFile, string outputFile)
        {
            try
            {
                XIncludingReader xIncludingReader	= new XIncludingReader(inputFile);
                XPathDocument xPathDocument			= new XPathDocument(xIncludingReader);

                XslCompiledTransform xslTransform	= new XslCompiledTransform(true);
                xslTransform.Load(xsltFile);

                System.IO.StreamWriter streamWriter = new StreamWriter(outputFile, false, System.Text.Encoding.ASCII);
                xslTransform.Transform(xPathDocument, new XsltArgumentList(), streamWriter);

                xIncludingReader.Close();
                streamWriter.Close();
            }
            catch (Exception exception)
            {
                // Add error handling here.
                MessageBox.Show(this, exception.Message, "Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                return;
            }
        }
示例#33
0
        public void testURLInvocation_XInclude_XIncludingReader()
        {
            // reset the counter
            WebRequest request = WebRequest.Create("http://127.0.0.1:5000/reset");
            WebResponse response = request.GetResponse();

            String filename = "C:/Christopher_Spaeth/code/xml_files_windows/url_invocation_xinclude.xml";
            XmlReaderSettings settings = new XmlReaderSettings();
            XmlReader reader = XmlReader.Create(filename, settings);
            //XmlDocument xmlDoc = new XmlDocument();
            //xmlDoc.Load(reader);

            //XmlReader r = XmlReader.Create(filename);
            XIncludingReader xir = new XIncludingReader(reader);
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(xir);
            String content = xmlDoc.DocumentElement.InnerText;

            //check the counter
            request = WebRequest.Create("http://127.0.0.1:5000/getCounter");
            response = request.GetResponse();
            Stream dataStream = response.GetResponseStream();
            StreamReader streamReader = new StreamReader(dataStream);
            string responseServer = streamReader.ReadToEnd();
            responseServer = responseServer.Trim();

            Assert.AreEqual("1", responseServer);
        }
示例#34
0
        public void testXInclude_XIncludingReader()
        {
            String filename = "C:/Christopher_Spaeth/code/xml_files_windows/xinclude.xml";
            XmlReaderSettings settings = new XmlReaderSettings();
            XmlReader reader = XmlReader.Create(filename, settings);

            XIncludingReader xir = new XIncludingReader(reader);
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(xir);
            String content = xmlDoc.DocumentElement.InnerText;

            //String content = xmlDoc.DocumentElement.InnerText;
            String childElement = xmlDoc.DocumentElement.FirstChild.Name;
            Assert.AreEqual("content", childElement);
            String childContent = xmlDoc.DocumentElement.FirstChild.InnerText;
            Assert.AreEqual("it_works", childContent);
        }