Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SiteMembershipCondition.cs
- PreservationFileWriter.cs
- OpenFileDialog.cs
- RoutedEventHandlerInfo.cs
- SafeEventHandle.cs
- TextEditorParagraphs.cs
- StylusSystemGestureEventArgs.cs
- XmlConvert.cs
- PropertyGridView.cs
- ClientApiGenerator.cs
- IdentityReference.cs
- FunctionParameter.cs
- CheckBox.cs
- ResourceSetExpression.cs
- TablePatternIdentifiers.cs
- QueryOutputWriter.cs
- InputDevice.cs
- FrameSecurityDescriptor.cs
- Semaphore.cs
- HtmlSelect.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- StaticContext.cs
- RoleGroupCollectionEditor.cs
- XmlTextEncoder.cs
- MarkupCompilePass2.cs
- TypefaceMap.cs
- XslCompiledTransform.cs
- PointAnimation.cs
- WrappedIUnknown.cs
- XmlnsDefinitionAttribute.cs
- ContextStaticAttribute.cs
- SkinBuilder.cs
- UIntPtr.cs
- XmlCustomFormatter.cs
- sqlcontext.cs
- RenderTargetBitmap.cs
- XmlSerializerNamespaces.cs
- DrawingImage.cs
- TypeDelegator.cs
- XmlSchemaDatatype.cs
- ExpressionBindingCollection.cs
- SafeMILHandle.cs
- QuotedStringFormatReader.cs
- GridLengthConverter.cs
- dbdatarecord.cs
- SystemWebCachingSectionGroup.cs
- IDQuery.cs
- RSACryptoServiceProvider.cs
- ArglessEventHandlerProxy.cs
- SetStoryboardSpeedRatio.cs
- DbExpressionRules.cs
- SimpleRecyclingCache.cs
- AsymmetricAlgorithm.cs
- TypeCodeDomSerializer.cs
- ImageMap.cs
- ValueTypeFixupInfo.cs
- InkCanvasInnerCanvas.cs
- ADRoleFactoryConfiguration.cs
- UniqueTransportManagerRegistration.cs
- ValidationUtility.cs
- DesignerView.cs
- Color.cs
- Executor.cs
- DataGridViewLinkCell.cs
- UnsafeNativeMethods.cs
- RequestNavigateEventArgs.cs
- RuntimeResourceSet.cs
- ThicknessAnimationUsingKeyFrames.cs
- HttpListenerException.cs
- ServicePerformanceCounters.cs
- MenuItem.cs
- AnnotationHelper.cs
- DispatcherFrame.cs
- FrameworkTextComposition.cs
- ConfigXmlReader.cs
- HelpEvent.cs
- FormViewUpdatedEventArgs.cs
- HttpListenerContext.cs
- TranslateTransform.cs
- MethodCallTranslator.cs
- CfgParser.cs
- DbModificationClause.cs
- SchemaManager.cs
- WebRequestModuleElement.cs
- TextEditorSpelling.cs
- Stackframe.cs
- UiaCoreProviderApi.cs
- TraversalRequest.cs
- PagesChangedEventArgs.cs
- OrderedDictionaryStateHelper.cs
- DocumentViewerBaseAutomationPeer.cs
- SemanticAnalyzer.cs
- RestClientProxyHandler.cs
- DataGridViewComboBoxEditingControl.cs
- SystemColors.cs
- PackWebResponse.cs
- BindingOperations.cs
- ExtenderControl.cs
- Localizer.cs
- InitializationEventAttribute.cs