Code:
/ FX-1434 / FX-1434 / 1.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
- Compress.cs
- ObjectListShowCommandsEventArgs.cs
- ProxyWebPart.cs
- ReplacementText.cs
- BamlTreeUpdater.cs
- ContentElementAutomationPeer.cs
- SecureEnvironment.cs
- AmbientLight.cs
- FileInfo.cs
- DbMetaDataCollectionNames.cs
- SynchronizationLockException.cs
- FamilyTypefaceCollection.cs
- DocumentsTrace.cs
- IisTraceWebEventProvider.cs
- EmptyCollection.cs
- PointValueSerializer.cs
- HttpResponse.cs
- ConnectionPoint.cs
- DocumentViewerHelper.cs
- XmlSignatureManifest.cs
- DefaultHttpHandler.cs
- DataGridViewSelectedCellCollection.cs
- WebEventTraceProvider.cs
- RequestQueryParser.cs
- ExpressionBuilderContext.cs
- PointAnimationClockResource.cs
- Interop.cs
- ExitEventArgs.cs
- Win32Native.cs
- Int64Animation.cs
- Int32Animation.cs
- Button.cs
- followingquery.cs
- CancellableEnumerable.cs
- AudioBase.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- __ConsoleStream.cs
- ModelPerspective.cs
- CompilerErrorCollection.cs
- StringCollection.cs
- CodeChecksumPragma.cs
- ViewDesigner.cs
- MatchSingleFxEngineOpcode.cs
- PostBackOptions.cs
- SchemaMerger.cs
- basemetadatamappingvisitor.cs
- EmptyEnumerator.cs
- Tile.cs
- NativeMethods.cs
- RoleGroup.cs
- BitmapFrame.cs
- IEnumerable.cs
- CodeCatchClauseCollection.cs
- DeobfuscatingStream.cs
- ValidationEventArgs.cs
- MultiSelectRootGridEntry.cs
- ObjectQuery.cs
- CorrelationToken.cs
- RegisteredArrayDeclaration.cs
- Italic.cs
- DataGridViewColumnCollectionEditor.cs
- ContainerSelectorActiveEvent.cs
- XmlSchemaFacet.cs
- ComponentDispatcher.cs
- FastPropertyAccessor.cs
- PreviewControlDesigner.cs
- ThicknessAnimationUsingKeyFrames.cs
- TdsParserSessionPool.cs
- DeleteIndexBinder.cs
- Vector3DCollection.cs
- DbProviderFactories.cs
- DictionarySectionHandler.cs
- SymbolEqualComparer.cs
- CustomCategoryAttribute.cs
- ObjectManager.cs
- ThicknessAnimationUsingKeyFrames.cs
- UserPreferenceChangingEventArgs.cs
- _HTTPDateParse.cs
- ConnectionPoint.cs
- QueryConverter.cs
- CompilerGeneratedAttribute.cs
- VScrollBar.cs
- CustomLineCap.cs
- ReadonlyMessageFilter.cs
- MailDefinition.cs
- EventWaitHandleSecurity.cs
- PostBackTrigger.cs
- ACE.cs
- NotifyParentPropertyAttribute.cs
- DefaultTraceListener.cs
- CompoundFileStorageReference.cs
- ServerValidateEventArgs.cs
- OperationInfo.cs
- ExternalCalls.cs
- XmlWrappingReader.cs
- FileDialog.cs
- XmlSchemaElement.cs
- SafeViewOfFileHandle.cs
- HideDisabledControlAdapter.cs
- RepeatBehavior.cs