public void Example()
        {
            #region Usage
            string xml = @"<Root type=""Object"">
              <Null type=""Null"" />
              <String type=""String"">This is a string!</String>
              <Char type=""String"">!</Char>
              <Integer type=""Integer"">123</Integer>
              <DateTime type=""Date"">2001-02-22T20:59:59Z</DateTime>
              <DateTimeOffset type=""Date"">2001-02-22T20:59:59+12:00</DateTimeOffset>
              <Float type=""Float"">1.1</Float>
              <Double type=""Float"">3.14</Double>
              <Decimal type=""Float"">19.95</Decimal>
              <Guid type=""Guid"">d66eab59-3715-4b35-9e06-fa61c1216eaa</Guid>
              <Uri type=""Uri"">http://james.newtonking.com</Uri>
              <Array type=""Array"">
                <Item type=""Integer"">1</Item>
                <Item type=""Bytes"">SGVsbG8gd29ybGQh</Item>
                <Item type=""Boolean"">True</Item>
              </Array>
              <Object type=""Object"">
                <String type=""String"">This is a string!</String>
                <Null type=""Null"" />
              </Object>
              <Constructor type=""Constructor"" name=""Date"">
                <Item type=""Integer"">2000</Item>
                <Item type=""Integer"">12</Item>
                <Item type=""Integer"">30</Item>
              </Constructor>
            </Root>";

            StringReader sr = new StringReader(xml);

            using (XmlReader xmlReader = XmlReader.Create(sr, new XmlReaderSettings {
                IgnoreWhitespace = true
            }))
                using (XmlJsonReader reader = new XmlJsonReader(xmlReader))
                {
                    JObject o = JObject.Load(reader);
                    //{
                    //  "Null": null,
                    //  "String": "This is a string!",
                    //  "Char": "!",
                    //  "Integer": 123,
                    //  "DateTime": "2001-02-23T09:59:59+13:00",
                    //  "DateTimeOffset": "2001-02-22T21:59:59+13:00",
                    //  "Float": 1.1,
                    //  "Double": 3.14,
                    //  "Decimal": 19.95,
                    //  "Guid": "d66eab59-3715-4b35-9e06-fa61c1216eaa",
                    //  "Uri": "http://james.newtonking.com",
                    //  "Array": [
                    //    1,
                    //    "SGVsbG8gd29ybGQh",
                    //    true
                    //  ],
                    //  "Object": {
                    //    "String": "This is a string!",
                    //    "Null": null
                    //  },
                    //  "Constructor": new Date(2000, 12, 30)
                    //}
                }
            #endregion

            using (XmlReader xmlReader = XmlReader.Create(new StringReader(xml), new XmlReaderSettings {
                IgnoreWhitespace = true
            }))
                using (XmlJsonReader reader = new XmlJsonReader(xmlReader))
                {
                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.StartObject, reader.TokenType);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("Null", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.Null, reader.TokenType);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("String", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.String, reader.TokenType);
                    Assert.AreEqual("This is a string!", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("Char", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.String, reader.TokenType);
                    Assert.AreEqual("!", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("Integer", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.Integer, reader.TokenType);
                    Assert.AreEqual(123L, reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("DateTime", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.Date, reader.TokenType);
                    Assert.AreEqual(DateTime.Parse("2001-02-22T20:59:59Z"), reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("DateTimeOffset", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.Date, reader.TokenType);
                    Assert.AreEqual(DateTime.Parse("2001-02-22T20:59:59+12:00"), reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("Float", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.Float, reader.TokenType);
                    Assert.AreEqual(1.1d, reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("Double", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.Float, reader.TokenType);
                    Assert.AreEqual(3.14d, reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("Decimal", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.Float, reader.TokenType);
                    Assert.AreEqual(19.95d, reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("Guid", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.String, reader.TokenType);
                    Assert.AreEqual("d66eab59-3715-4b35-9e06-fa61c1216eaa", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("Uri", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.String, reader.TokenType);
                    Assert.AreEqual("http://james.newtonking.com", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("Array", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.StartArray, reader.TokenType);

                    Assert.AreEqual(1, reader.ReadAsInt32());
                    Assert.AreEqual(JsonToken.Integer, reader.TokenType);
                    Assert.AreEqual(1L, reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
                    Assert.AreEqual(Encoding.UTF8.GetBytes("Hello world!"), reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
                    Assert.AreEqual(true, reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.EndArray, reader.TokenType);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("Object", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.StartObject, reader.TokenType);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("String", reader.Value);

                    Assert.AreEqual("This is a string!", reader.ReadAsString());
                    Assert.AreEqual(JsonToken.String, reader.TokenType);
                    Assert.AreEqual("This is a string!", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("Null", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.Null, reader.TokenType);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.EndObject, reader.TokenType);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                    Assert.AreEqual("Constructor", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
                    Assert.AreEqual("Date", reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.Integer, reader.TokenType);
                    Assert.AreEqual(2000L, reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.Integer, reader.TokenType);
                    Assert.AreEqual(12L, reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.Integer, reader.TokenType);
                    Assert.AreEqual(30L, reader.Value);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.EndConstructor, reader.TokenType);

                    Assert.IsTrue(reader.Read());
                    Assert.AreEqual(JsonToken.EndObject, reader.TokenType);

                    Assert.IsFalse(reader.Read());
                }
        }
예제 #2
0
        public void Example()
        {
            #region Usage
            string xml = @"<Root type=""Object"">
              <Null type=""Null"" />
              <String type=""String"">This is a string!</String>
              <Char type=""String"">!</Char>
              <Integer type=""Integer"">123</Integer>
              <DateTime type=""Date"">2001-02-22T20:59:59Z</DateTime>
              <DateTimeOffset type=""Date"">2001-02-22T20:59:59+12:00</DateTimeOffset>
              <Float type=""Float"">1.1</Float>
              <Double type=""Float"">3.14</Double>
              <Decimal type=""Float"">19.95</Decimal>
              <Guid type=""Guid"">d66eab59-3715-4b35-9e06-fa61c1216eaa</Guid>
              <Uri type=""Uri"">http://james.newtonking.com</Uri>
              <Array type=""Array"">
                <Item type=""Integer"">1</Item>
                <Item type=""Bytes"">SGVsbG8gd29ybGQh</Item>
                <Item type=""Boolean"">True</Item>
              </Array>
              <Object type=""Object"">
                <String type=""String"">This is a string!</String>
                <Null type=""Null"" />
              </Object>
              <Constructor type=""Constructor"" name=""Date"">
                <Item type=""Integer"">2000</Item>
                <Item type=""Integer"">12</Item>
                <Item type=""Integer"">30</Item>
              </Constructor>
            </Root>";

            StringReader sr = new StringReader(xml);

            using (XmlReader xmlReader = XmlReader.Create(sr, new XmlReaderSettings { IgnoreWhitespace = true }))
            using (XmlJsonReader reader = new XmlJsonReader(xmlReader))
            {
                JObject o = JObject.Load(reader);
                //{
                //  "Null": null,
                //  "String": "This is a string!",
                //  "Char": "!",
                //  "Integer": 123,
                //  "DateTime": "2001-02-23T09:59:59+13:00",
                //  "DateTimeOffset": "2001-02-22T21:59:59+13:00",
                //  "Float": 1.1,
                //  "Double": 3.14,
                //  "Decimal": 19.95,
                //  "Guid": "d66eab59-3715-4b35-9e06-fa61c1216eaa",
                //  "Uri": "http://james.newtonking.com",
                //  "Array": [
                //    1,
                //    "SGVsbG8gd29ybGQh",
                //    true
                //  ],
                //  "Object": {
                //    "String": "This is a string!",
                //    "Null": null
                //  },
                //  "Constructor": new Date(2000, 12, 30)
                //}
            }
            #endregion

            using (XmlReader xmlReader = XmlReader.Create(new StringReader(xml), new XmlReaderSettings { IgnoreWhitespace = true }))
            using (XmlJsonReader reader = new XmlJsonReader(xmlReader))
            {
                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.StartObject, reader.TokenType);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("Null", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.Null, reader.TokenType);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("String", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.String, reader.TokenType);
                Assert.AreEqual("This is a string!", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("Char", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.String, reader.TokenType);
                Assert.AreEqual("!", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("Integer", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.Integer, reader.TokenType);
                Assert.AreEqual(123, reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("DateTime", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.Date, reader.TokenType);
                Assert.AreEqual(DateTime.Parse("2001-02-22T20:59:59Z"), reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("DateTimeOffset", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.Date, reader.TokenType);
                Assert.AreEqual(DateTime.Parse("2001-02-22T20:59:59+12:00"), reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("Float", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.Float, reader.TokenType);
                Assert.AreEqual(1.1d, reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("Double", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.Float, reader.TokenType);
                Assert.AreEqual(3.14d, reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("Decimal", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.Float, reader.TokenType);
                Assert.AreEqual(19.95d, reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("Guid", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.String, reader.TokenType);
                Assert.AreEqual("d66eab59-3715-4b35-9e06-fa61c1216eaa", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("Uri", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.String, reader.TokenType);
                Assert.AreEqual("http://james.newtonking.com", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("Array", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.StartArray, reader.TokenType);

                Assert.AreEqual(1, reader.ReadAsInt32());
                Assert.AreEqual(JsonToken.Integer, reader.TokenType);
                Assert.AreEqual(1, reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
                Assert.AreEqual(Encoding.UTF8.GetBytes("Hello world!"), reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
                Assert.AreEqual(true, reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.EndArray, reader.TokenType);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("Object", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.StartObject, reader.TokenType);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("String", reader.Value);

                Assert.AreEqual("This is a string!", reader.ReadAsString());
                Assert.AreEqual(JsonToken.String, reader.TokenType);
                Assert.AreEqual("This is a string!", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("Null", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.Null, reader.TokenType);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.EndObject, reader.TokenType);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
                Assert.AreEqual("Constructor", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
                Assert.AreEqual("Date", reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.Integer, reader.TokenType);
                Assert.AreEqual(2000, reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.Integer, reader.TokenType);
                Assert.AreEqual(12, reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.Integer, reader.TokenType);
                Assert.AreEqual(30, reader.Value);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.EndConstructor, reader.TokenType);

                Assert.IsTrue(reader.Read());
                Assert.AreEqual(JsonToken.EndObject, reader.TokenType);

                Assert.IsFalse(reader.Read());
            }
        }