Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / UI / XPathBinder.cs / 1 / XPathBinder.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI { using System; using System.Globalization; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Data; using System.Security.Permissions; using System.Xml; using System.Xml.XPath; ////// [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] public sealed class XPathBinder { ///private XPathBinder() { } /// /// public static object Eval(object container, string xPath) { IXmlNamespaceResolver resolver = null; return Eval(container, xPath, resolver); } public static object Eval(object container, string xPath, IXmlNamespaceResolver resolver) { if (container == null) { throw new ArgumentNullException("container"); } if (String.IsNullOrEmpty(xPath)) { throw new ArgumentNullException("xPath"); } IXPathNavigable node = container as IXPathNavigable; if (node == null) { throw new ArgumentException(SR.GetString(SR.XPathBinder_MustBeIXPathNavigable, container.GetType().FullName)); } XPathNavigator navigator = node.CreateNavigator(); object retValue = navigator.Evaluate(xPath, resolver); // If we get back an XPathNodeIterator instead of a simple object, advance // the iterator to the first node and return the value. XPathNodeIterator iterator = retValue as XPathNodeIterator; if (iterator != null) { if (iterator.MoveNext()) { retValue = iterator.Current.Value; } else { retValue = null; } } return retValue; } ////// public static string Eval(object container, string xPath, string format) { return Eval(container, xPath, format, null); } public static string Eval(object container, string xPath, string format, IXmlNamespaceResolver resolver) { object value = XPathBinder.Eval(container, xPath, resolver); if (value == null) { return String.Empty; } else { if (String.IsNullOrEmpty(format)) { return value.ToString(); } else { return String.Format(format, value); } } } ////// Evaluates an XPath query with respect to a context IXPathNavigable object that returns a NodeSet. /// public static IEnumerable Select(object container, string xPath) { return Select(container, xPath, null); } public static IEnumerable Select(object container, string xPath, IXmlNamespaceResolver resolver) { if (container == null) { throw new ArgumentNullException("container"); } if (String.IsNullOrEmpty(xPath)) { throw new ArgumentNullException("xPath"); } ArrayList results = new ArrayList(); IXPathNavigable node = container as IXPathNavigable; if (node == null) { throw new ArgumentException(SR.GetString(SR.XPathBinder_MustBeIXPathNavigable, container.GetType().FullName)); } XPathNavigator navigator = node.CreateNavigator(); XPathNodeIterator iterator = navigator.Select(xPath, resolver); while (iterator.MoveNext()) { IHasXmlNode hasXmlNode = iterator.Current as IHasXmlNode; if (hasXmlNode == null) { throw new InvalidOperationException(SR.GetString(SR.XPathBinder_MustHaveXmlNodes)); } results.Add(hasXmlNode.GetNode()); } return results; } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BigInt.cs
- ClockGroup.cs
- ItemDragEvent.cs
- IdleTimeoutMonitor.cs
- FormViewInsertedEventArgs.cs
- SmiEventSink.cs
- CharEntityEncoderFallback.cs
- TextServicesCompartment.cs
- BitmapEffectDrawingContextState.cs
- activationcontext.cs
- ForEachAction.cs
- ScrollBarAutomationPeer.cs
- EntityContainerAssociationSetEnd.cs
- EmptyEnumerable.cs
- DataGridViewAutoSizeModeEventArgs.cs
- SemaphoreFullException.cs
- DataObjectAttribute.cs
- IISMapPath.cs
- ImageFormatConverter.cs
- CookieHandler.cs
- XmlSchemaObjectCollection.cs
- RenderOptions.cs
- GorillaCodec.cs
- NonParentingControl.cs
- ExecutionContext.cs
- ProviderIncompatibleException.cs
- LocalIdKeyIdentifierClause.cs
- SerializableAttribute.cs
- BuildResult.cs
- smtppermission.cs
- FilterElement.cs
- Utils.cs
- DSACryptoServiceProvider.cs
- HeaderedContentControl.cs
- Parameter.cs
- XmlDataCollection.cs
- SecurityTokenValidationException.cs
- XamlFilter.cs
- BamlRecords.cs
- BaseAsyncResult.cs
- CodeEntryPointMethod.cs
- ControlParameter.cs
- Tablet.cs
- IfAction.cs
- SafeNativeMethodsCLR.cs
- ConstrainedDataObject.cs
- BitmapPalette.cs
- BindingContext.cs
- CalculatedColumn.cs
- StdValidatorsAndConverters.cs
- RijndaelManaged.cs
- PkcsUtils.cs
- SmiMetaDataProperty.cs
- ConnectionManagementElement.cs
- SelectionPattern.cs
- SymmetricKeyWrap.cs
- EntityDataSourceMemberPath.cs
- BinaryParser.cs
- TextTreePropertyUndoUnit.cs
- FontWeight.cs
- XmlEncoding.cs
- Range.cs
- AnnotationComponentChooser.cs
- TextServicesLoader.cs
- CheckableControlBaseAdapter.cs
- CodeDefaultValueExpression.cs
- VolatileEnlistmentState.cs
- CursorInteropHelper.cs
- TextSegment.cs
- SignatureHelper.cs
- XamlTreeBuilderBamlRecordWriter.cs
- RectangleGeometry.cs
- LongTypeConverter.cs
- RequestUriProcessor.cs
- IntegrationExceptionEventArgs.cs
- ChangeInterceptorAttribute.cs
- TransformBlockRequest.cs
- dtdvalidator.cs
- SqlConnectionPoolGroupProviderInfo.cs
- LocatorManager.cs
- ControlCollection.cs
- CustomTypeDescriptor.cs
- SynchronizedKeyedCollection.cs
- XmlDataSourceNodeDescriptor.cs
- EntityDesignerUtils.cs
- externdll.cs
- _LazyAsyncResult.cs
- DataServiceQuery.cs
- UpdateExpressionVisitor.cs
- ExpressionBindings.cs
- ScaleTransform.cs
- Fonts.cs
- PageAdapter.cs
- WebPartUserCapability.cs
- ContentAlignmentEditor.cs
- HtmlInputRadioButton.cs
- ProfessionalColors.cs
- PrintDialogException.cs
- RemotingConfiguration.cs
- ToolTip.cs