Example #1
0
        private static void CollectIncludes(XmlSchema schema, Hashtable includeSchemas)
        {
            XmlSchemaObjectEnumerator enumerator = schema.Includes.GetEnumerator();

            while (enumerator.MoveNext())
            {
                var    current        = (XmlSchemaExternal)enumerator.Current;
                string schemaLocation = current.SchemaLocation;
                if (current is XmlSchemaImport)
                {
                    current.SchemaLocation = null;
                }
                else if (((current is XmlSchemaInclude) && (schemaLocation != null)) && (schemaLocation.Length > 0))
                {
                    string str2 = Path.GetFullPath(schemaLocation).ToLower();
                    if (includeSchemas[str2] == null)
                    {
                        XmlSchema schema2 = ReadSchema(schemaLocation);
                        includeSchemas[str2] = schema2;
                        CollectIncludes(schema2, includeSchemas);
                    }
                    current.Schema         = (XmlSchema)includeSchemas[str2];
                    current.SchemaLocation = null;
                }
            }
        }
Example #2
0
 private static void TraverseParticle(XmlSchemaParticle particle, ArrayList elementDeclsInContentModel)
 {
     if (particle is XmlSchemaElement)
     {
         XmlSchemaElement value = particle as XmlSchemaElement;
         elementDeclsInContentModel.Add(value);
     }
     else if (particle is XmlSchemaGroupBase)
     {
         XmlSchemaGroupBase        xmlSchemaGroupBase = particle as XmlSchemaGroupBase;
         XmlSchemaObjectEnumerator enumerator         = xmlSchemaGroupBase.Items.GetEnumerator();
         try
         {
             while (enumerator.MoveNext())
             {
                 XmlSchemaParticle particle2 = (XmlSchemaParticle)enumerator.Current;
                 RDLValidatingReader.TraverseParticle(particle2, elementDeclsInContentModel);
             }
         }
         finally
         {
             IDisposable disposable = enumerator as IDisposable;
             if (disposable != null)
             {
                 disposable.Dispose();
             }
         }
     }
     else if (particle is XmlSchemaAny)
     {
         XmlSchemaAny xmlSchemaAny = particle as XmlSchemaAny;
         RDLValidatingReader.m_processContent = xmlSchemaAny.ProcessContents;
     }
 }
Example #3
0
        private TypeMapping ImportDataType(XmlSchemaSimpleType dataType, string typeNs, string identifier, bool isList)
        {
            TypeMapping mapping = this.ImportNonXsdPrimitiveDataType(dataType, typeNs);

            if (mapping != null)
            {
                return(mapping);
            }
            if (dataType.Content is XmlSchemaSimpleTypeRestriction)
            {
                XmlSchemaSimpleTypeRestriction content = (XmlSchemaSimpleTypeRestriction)dataType.Content;
                using (XmlSchemaObjectEnumerator enumerator = content.Facets.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        if (enumerator.Current is XmlSchemaEnumerationFacet)
                        {
                            return(this.ImportEnumeratedDataType(dataType, typeNs, identifier, isList));
                        }
                    }
                    goto Label_0104;
                }
            }
            if ((dataType.Content is XmlSchemaSimpleTypeList) || (dataType.Content is XmlSchemaSimpleTypeUnion))
            {
                if (dataType.Content is XmlSchemaSimpleTypeList)
                {
                    XmlSchemaSimpleTypeList list = (XmlSchemaSimpleTypeList)dataType.Content;
                    if (list.ItemType != null)
                    {
                        mapping = this.ImportDataType(list.ItemType, typeNs, identifier, true);
                        if (mapping != null)
                        {
                            return(mapping);
                        }
                    }
                }
                return(new PrimitiveMapping {
                    TypeDesc = base.Scope.GetTypeDesc(typeof(string)), TypeName = mapping.TypeDesc.DataType.Name
                });
            }
Label_0104:
            return(this.ImportPrimitiveDataType(dataType));
        }
Example #4
0
 private static void CheckTypes(ServiceDescription description, BasicProfileViolationCollection violations)
 {
     foreach (XmlSchema schema in description.Types.Schemas)
     {
         if ((schema.TargetNamespace == null) || (schema.TargetNamespace.Length == 0))
         {
             using (XmlSchemaObjectEnumerator enumerator2 = schema.Items.GetEnumerator())
             {
                 while (enumerator2.MoveNext())
                 {
                     if (!(enumerator2.Current is XmlSchemaAnnotation))
                     {
                         violations.Add("R2105", System.Web.Services.Res.GetString("Element", new object[] { "schema", description.TargetNamespace }));
                         break;
                     }
                 }
             }
         }
     }
 }
Example #5
0
 public ItemEnumerator(DataModelSchema schema, XmlSchemaObjectEnumerator xmlSchemaObjectEnumerator)
 {
     // Initialize the object
     this.schema = schema;
     this.xmlSchemaObjectEnumerator = xmlSchemaObjectEnumerator;
 }
Example #6
0
        private void button1_Click(object sender, EventArgs e)
        {
            Logger.Text = "";
            XmlTextReader xmlr = null;

            System.Web.Services.Description.ServiceDescription  servdesc = null;
            System.Web.Services.Description.PortTypeCollection  ports    = null;
            System.Web.Services.Description.OperationCollection ops      = null;
            System.Xml.Serialization.XmlSchemas schemas = null;

            for (int i = 0; i < httpheaderlist.Items.Count; i++)
            {
                httpheaderlist.Items.RemoveAt(i);
            }
            if (!urltext.Text.StartsWith("http"))
            {
                MessageBox.Show("Please enter a URL starting with http");
                return;
            }
            if (urltext.Text.IndexOf("://") == -1)
            {
                MessageBox.Show("Did you forget the protocol like http:// or https:// ?" +
                                "\r\n E.g., http://soap.amazon.com/schemas2/AmazonWebServices.wsdl");
                return;
            }
            try
            {
                xmlr = new XmlTextReader(urltext.Text);
                xmlr.WhitespaceHandling = WhitespaceHandling.None;
                servdesc     = System.Web.Services.Description.ServiceDescription.Read(xmlr);
                schemas      = servdesc.Types.Schemas;
                Logger.Text += "=== Found " + schemas.Count + " schema(s)===\r\n";

                for (int k = 0; k < schemas.Count; k++)
                {
                    XmlSchemaObjectCollection xmlelem    = schemas[k].Items;
                    XmlSchemaObjectEnumerator enumerator = xmlelem.GetEnumerator();
                    while (enumerator.MoveNext())
                    {
                        if (enumerator.Current is XmlSchemaElement)
                        {
                            XmlSchemaElement xse = (XmlSchemaElement)enumerator.Current;
                            Logger.Text += xse.Name + '=' + xse.SchemaType + ", ";
                            TraverseParticle(xse);
                        }
                        else
                        {
                            if (enumerator.Current is XmlSchemaComplexType)
                            {
                                XmlSchemaComplexType xsct = (XmlSchemaComplexType)enumerator.Current;
                                Logger.Text += '\'' + xsct.Name + ": ";
                                TraverseParticle(xsct.Particle);
                                if (xsct.ContentModel is XmlSchemaSimpleContent)
                                {
                                    Logger.Text += "Simple; ";
                                }
                                else
                                {
                                    //XmlSchemaComplexContent complexContent = (XmlSchemaComplexContent)xsct.ContentModel;
                                    if (xsct.ContentModel is XmlSchemaComplexContent)
                                    {
                                        Logger.Text += "Complex; ";
                                    }
                                }
                                Logger.Text += "\',";
                            }
                        }
                    }
                    Logger.Text += "\r\n";
                }

                ports        = servdesc.PortTypes;
                Logger.Text += " *** Found " + ports.Count + " portType(s) *** \r\n";
                TreeNode tn      = null;
                TreeNode msgNode = null;
                TreeNode root    = new TreeNode(urltext.Text);
                treeView1.Nodes.Add(root);
                for (int j = 0; j < ports.Count; j++)
                {
                    ops          = ports[j].Operations;
                    Logger.Text += " --- Found " + ops.Count + " operation(s) in : " + (j + 1) + " ---\r\n";
                    for (int i = 0; i < ops.Count; i++)
                    {
                        Logger.Text += ops[i].Name + "->" + "\r\n";
                        tn           = new TreeNode(ops[i].Name);
                        root.Nodes.Add(tn);
                        System.Web.Services.Description.OperationMessageCollection iter = ops[i].Messages;
                        //Message msgiter = null;
                        for (int k = 0; k < iter.Count; k++)
                        {
                            Logger.Text += iter[k].Message.Name + "\r\n";
                            msgNode      = new TreeNode(iter[k].Message.Name);
                            tn.Nodes.Add(msgNode);
                        }
                    }
                }
                GenerateSOAP();

                /*
                 * while (xmlr.Read())
                 * {
                 *  switch (xmlr.NodeType)
                 *  {
                 *      case XmlNodeType.Element:
                 *
                 *          Logger.Text += xmlr.Name + "->" + xmlr.R + "\r\n";
                 *          break;
                 *      case XmlNodeType.EndElement:
                 *          break;
                 *      default:
                 *          break;
                 *  }
                 * }
                 */
            }
            catch (XmlException xe)
            {
                Logger.Text += xe.StackTrace;
            }

            catch (Exception ex)
            {
                Logger.Text += ex.StackTrace;
            }
            finally
            {
                if (xmlr != null)
                {
                    xmlr.Close();
                }
            }
        }