コード例 #1
0
        private static void FromXmlOSData(PrimitiveMedia media, XmlTextReader reader)
        {
            for (;;)
            {
                if (!reader.Read())
                {
                    throw new XmlException();
                }

                switch (reader.NodeType)
                {
                case XmlNodeType.Element:
                    if (reader.Name == "llsd")
                    {
                        AnArray entries = LlsdXml.DeserializeLLSDNode(reader) as AnArray;
                        foreach (IValue iv in entries)
                        {
                            Map m = iv as Map;
                            if (m != null)
                            {
                                media.Add(new Entry(m));
                            }
                            else
                            {
                                media.Add(null);
                            }
                        }
                    }
                    else
                    {
                        reader.ReadToEndElement();
                    }
                    break;

                case XmlNodeType.EndElement:
                    if (reader.Name != "OSData")
                    {
                        throw new XmlException();
                    }
                    return;
                }
            }
        }
コード例 #2
0
        private static void FromXmlOSMedia(PrimitiveMedia media, XmlTextReader reader)
        {
            for (; ;)
            {
                if (!reader.Read())
                {
                    throw new XmlException();
                }

                switch (reader.NodeType)
                {
                case XmlNodeType.Element:
                    if (reader.IsEmptyElement)
                    {
                        break;
                    }
                    if (reader.Name == "OSData")
                    {
                        FromXmlOSData(media, reader);
                    }
                    else
                    {
                        reader.ReadToEndElement();
                    }
                    break;

                case XmlNodeType.EndElement:
                    if (reader.Name != "OSMedia")
                    {
                        throw new XmlException();
                    }
                    return;

                default:
                    break;
                }
            }
        }
コード例 #3
0
        private static void FromStringifiedXmlOSMedia(PrimitiveMedia media, XmlTextReader reader)
        {
            for (;;)
            {
                if (!reader.Read())
                {
                    throw new XmlException();
                }

                switch (reader.NodeType)
                {
                case XmlNodeType.Element:
                    if (reader.Name == "OSMedia")
                    {
                        FromXmlOSMedia(media, reader);
                        return;
                    }
                    break;

                default:
                    break;
                }
            }
        }
コード例 #4
0
        public static PrimitiveMedia FromXml(XmlTextReader reader)
        {
            if (reader.IsEmptyElement)
            {
                return(null);
            }

            PrimitiveMedia media          = new PrimitiveMedia();
            StringBuilder  textNode       = new StringBuilder();
            bool           haveNodeInside = false;

            for (; ;)
            {
                if (!reader.Read())
                {
                    throw new XmlException();
                }

                switch (reader.NodeType)
                {
                case XmlNodeType.Element:
                    if (reader.IsEmptyElement)
                    {
                        break;
                    }
                    switch (reader.Name)
                    {
                    case "OSMedia":
                        haveNodeInside = true;
                        FromXmlOSMedia(media, reader);
                        break;

                    default:
                        reader.ReadToEndElement();
                        break;
                    }
                    break;

                case XmlNodeType.Text:
                    textNode.Append(reader.Value);
                    break;

                case XmlNodeType.EndElement:
                    if (reader.Name != "Media")
                    {
                        throw new XmlException();
                    }
                    if (!haveNodeInside)
                    {
                        /* this is stringified version */
                        using (MemoryStream ms = new MemoryStream(textNode.ToString().ToUTF8Bytes()))
                        {
                            using (XmlTextReader insetReader = ms.CreateXmlReader())
                            {
                                FromStringifiedXmlOSMedia(media, insetReader);
                            }
                        }
                    }
                    return(media);

                default:
                    break;
                }
            }
        }