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
- TableColumn.cs
- SizeValueSerializer.cs
- DataGridColumnFloatingHeader.cs
- UsernameTokenFactoryCredential.cs
- XmlILAnnotation.cs
- Identity.cs
- FlowLayoutPanel.cs
- HostProtectionException.cs
- FixedSOMPageElement.cs
- TreeNodeCollection.cs
- CompilerScopeManager.cs
- BuiltInPermissionSets.cs
- OrderPreservingMergeHelper.cs
- EntryPointNotFoundException.cs
- HttpContext.cs
- ColumnWidthChangedEvent.cs
- NetPeerTcpBindingElement.cs
- StackSpiller.Bindings.cs
- ComPlusInstanceContextInitializer.cs
- Line.cs
- CancellationTokenRegistration.cs
- ResourceWriter.cs
- ResourceAssociationSet.cs
- QueueException.cs
- RegexGroupCollection.cs
- ForeignKeyConstraint.cs
- AssemblyAssociatedContentFileAttribute.cs
- TextEffect.cs
- SuppressedPackageProperties.cs
- _OSSOCK.cs
- TableLayout.cs
- HttpModulesSection.cs
- BaseCodePageEncoding.cs
- CompiledIdentityConstraint.cs
- FormViewRow.cs
- FreeIndexList.cs
- TraceHandler.cs
- NullableIntSumAggregationOperator.cs
- TypeGeneratedEventArgs.cs
- KeyboardEventArgs.cs
- CryptographicAttribute.cs
- FixedHighlight.cs
- UnsafeNativeMethods.cs
- StylusPointDescription.cs
- DataGridRowEventArgs.cs
- OpCellTreeNode.cs
- ImpersonateTokenRef.cs
- EventRoute.cs
- NavigationExpr.cs
- CDSsyncETWBCLProvider.cs
- WindowsSolidBrush.cs
- QueuePropertyVariants.cs
- AuthenticationServiceManager.cs
- DataGridViewCellValidatingEventArgs.cs
- ClientScriptManagerWrapper.cs
- SimpleLine.cs
- AssemblyNameProxy.cs
- StaticDataManager.cs
- DecimalStorage.cs
- TextEndOfLine.cs
- TrustSection.cs
- ValidateNames.cs
- UnhandledExceptionEventArgs.cs
- Stack.cs
- ClipboardData.cs
- GradientStopCollection.cs
- TrackingRecord.cs
- InputReport.cs
- EntryWrittenEventArgs.cs
- XslVisitor.cs
- MissingMemberException.cs
- Environment.cs
- XmlEnumAttribute.cs
- Attributes.cs
- ClipboardData.cs
- CodeParameterDeclarationExpression.cs
- TextTrailingCharacterEllipsis.cs
- WindowsFormsHostAutomationPeer.cs
- PerfCounters.cs
- _NegotiateClient.cs
- EventLogStatus.cs
- FormsAuthenticationCredentials.cs
- validationstate.cs
- XsdValidatingReader.cs
- DesignTimeParseData.cs
- BlockUIContainer.cs
- FlowDocumentPage.cs
- BitStack.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- DesignBindingPicker.cs
- StringFormat.cs
- XmlSchemaSimpleTypeRestriction.cs
- TreeChangeInfo.cs
- DataGridCellsPresenter.cs
- ServiceReflector.cs
- XmlSchemaComplexContent.cs
- _NegoStream.cs
- AuthenticationServiceManager.cs
- PropertyCondition.cs
- SecureEnvironment.cs