コード例 #1
0
        public INXmlElementReader Create()
        {
            inputStream.Seek(1, SeekOrigin.Current);
            var nodeName = inputStream.ReadWord();

            var line = inputStream.ReadRestOfLine().Trim();

            if (!line.EndsWith(">"))
            {
                throw new NXmlReaderFormatException("Missing element closing brace on same line element is declared");
            }

            var attributes = new NXmlNodeAttributes(line.Trim('>', '/'));

            INXmlElementReader reader;

            if (line.EndsWith("/>"))
            {
                reader = new NXmlCompactElementReader(attributes, nodeName);
            }
            else
            {
                reader = new NXmlElementReader(inputStream, attributes, nodeName);
            }
            return(reader);
        }
コード例 #2
0
        public INXmlElementReader GetNextChildNode()
        {
            INXmlElementReader reader = null;

            if (inputStream.Seek('<', '>'))
            {
                inputStream.Seek(1, SeekOrigin.Current);
                var closingElement = inputStream.Peek() == '/';
                inputStream.Seek(-1, SeekOrigin.Current);

                if (!closingElement)
                {
                    reader = new XmlElementReaderFactory(inputStream).Create();
                }
            }

            return(reader);
        }
コード例 #3
0
        public Payload Read(XmlStreamReader inputStream)
        {
            Payload payload;

            inputStream.Seek(0, SeekOrigin.Begin);
            if (inputStream.Seek("<c type=\"!0\""))
            {
                using (var nodeReader = new XmlElementReaderFactory(inputStream).Create())
                {
                    payload = (Payload)objectReader.Get(nodeReader);
                }
            }
            else
            {
                throw new UnableToReadXMLTextException("Missing payload.");
            }

            return(payload);
        }