コード例 #1
0
 void DeriveShapeFromRows() {
     object schemaInfo = null;
     for (int i=0; (i<rows.Count) && (null==schemaInfo); i++) {
         XPathNode nd = rows[i] as XPathNode;
         Debug.Assert(null != nd && (XPathNodeType.Attribute == nd.NodeType || XPathNodeType.Element == nd.NodeType));
         if (null != nd) {
             if (XPathNodeType.Attribute == nd.NodeType)
                 schemaInfo = nd.SchemaAttribute;
             else
                 schemaInfo = nd.SchemaElement;
         }
     }
     if (0 == rows.Count) {
         throw new NotImplementedException("XPath failed to match an elements");
     }
     if (null == schemaInfo) {
         rows.Clear();
         throw new XmlException(Res.XmlDataBinding_NoSchemaType, (string[])null);
     }
     ShapeGenerator shapeGen = new ShapeGenerator(this.namespaceResolver);
     XmlSchemaElement xse = schemaInfo as XmlSchemaElement;
     if (null != xse)
         this.rowShape = shapeGen.GenerateFromSchema(xse);
     else
         this.rowShape = shapeGen.GenerateFromSchema((XmlSchemaAttribute)schemaInfo);
 }