public static bool IsMatching(ServiceBase service)
 {
     return IsMatching(service.Information.serviceType);
 }
예제 #2
0
        public virtual void ParseDescription(ref UPnPDevice device, string xml)
        {
            XmlDocument document = new XmlDocument();
            document.LoadXml(xml);
            #region Get Spec Version
            XmlNodeList nodes = document.GetElementsByTagName("specVersion");
            if (nodes.Count == 1)
            {
                nodes = nodes[0].ChildNodes;
                foreach (XmlNode node in nodes)
                {
                    switch (node.Name.ToLower())
                    {
                        case "major":
                            device.Information.SpecVersion.Major = node.InnerText;
                            break;
                        case "minor":
                            device.Information.SpecVersion.Minor = node.InnerText;
                            break;
                    }
                }
            }
            #endregion
            #region Root Device Information
            nodes = document.GetElementsByTagName("device");
            if (nodes.Count > 0)
            {
                nodes = nodes[0].ChildNodes;
                foreach (XmlNode node in nodes)
                {
                    switch (node.Name.ToLower())
                    {
                        case "devicetype":
                            device.Information.DeviceType = node.InnerText;
                            break;
                        case "friendlyname":
                            device.Information.FriendlyName = node.InnerText;
                            break;
                        case "manufacturer":
                            device.Information.Manufacturer = node.InnerText;
                            break;
                        case "manufacturerurl":
                            device.Information.ManufacturerURL = node.InnerText;
                            break;
                        case "modeldescription":
                            device.Information.ModelDescription = node.InnerText;
                            break;
                        case "modelname":
                            device.Information.ModelName = node.InnerText;
                            break;
                        case "udn":
                            device.Information.UDN = node.InnerText;
                            break;
                        case "presentationurl":
                            device.Information.PresentationURL = node.InnerText;
                            break;
                        case "servicelist":
                            XmlNodeList serviceList = node.ChildNodes;
                            foreach (XmlNode xmlService in serviceList)
                            {
                                ServiceBase service = new ServiceBase();
                                if (device.RootDevice != null)
                                    service.Device = device.RootDevice;
                                else
                                    service.Device = device;

                                foreach (XmlNode serviceNode in xmlService)
                                {
                                    switch (serviceNode.Name.ToLower())
                                    {
                                        case "servicetype":
                                            service.Information.serviceType = serviceNode.InnerText;
                                            break;
                                        case "serviceid":
                                            service.Information.ServiceId = serviceNode.InnerText;
                                            break;
                                        case "controlurl":
                                            service.Information.ControlURL = serviceNode.InnerText;
                                            break;
                                        case "eventsuburl":
                                            service.Information.EventSubURL = serviceNode.InnerText;
                                            break;
                                        case "scpdurl":
                                            service.Information.SCPDURL = serviceNode.InnerText;
                                            break;
                                    }
                                }
                                if (device.RootDevice != null)
                                    device.RootDevice.Services.Add(service);
                                else
                                    device.Services.Add(service);
                            }
                            break;
                        case "devicelist":
                            XmlNodeList devicelist = node.ChildNodes;
                            foreach (XmlNode xmlDevice in devicelist)
                            {
                                UPnPDevice subdevice = new UPnPDevice();
                                if (device.RootDevice != null)
                                    subdevice.RootDevice = device.RootDevice;
                                else
                                    subdevice.RootDevice = device;
                                ParseDescription(ref subdevice, xmlDevice.OuterXml);
                                device.SubDevices.Add(subdevice);
                            }
                            break;
                    }
                }
            }
            #endregion
        }
 public WANIPConnectionService(ServiceBase service)
     : base(service)
 {
 }