Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / 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.
//------------------------------------------------------------------------------
//
// 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
- VirtualizedItemProviderWrapper.cs
- ForeignConstraint.cs
- UnmanagedMarshal.cs
- UserValidatedEventArgs.cs
- ExpressionLexer.cs
- Positioning.cs
- CodeLinePragma.cs
- DecoderReplacementFallback.cs
- PageWrapper.cs
- CodeLinePragma.cs
- WebPartCollection.cs
- QuadTree.cs
- SoapAttributeOverrides.cs
- HelpOperationInvoker.cs
- VectorAnimationUsingKeyFrames.cs
- AttachedPropertyBrowsableAttribute.cs
- ListViewTableRow.cs
- LeaseManager.cs
- FileSystemEventArgs.cs
- DataObjectAttribute.cs
- QueryableFilterUserControl.cs
- BrowserDefinition.cs
- AnnotationComponentManager.cs
- RawStylusInputCustomDataList.cs
- SQLRoleProvider.cs
- RawStylusActions.cs
- XmlSchemaInferenceException.cs
- ViewStateException.cs
- NavigationCommands.cs
- SqlCacheDependency.cs
- LogicalExpr.cs
- Light.cs
- HwndMouseInputProvider.cs
- JapaneseCalendar.cs
- linebase.cs
- Bind.cs
- HtmlInputText.cs
- ScrollableControlDesigner.cs
- SqlMethods.cs
- WebUtility.cs
- FileDataSourceCache.cs
- PointConverter.cs
- NetworkInformationPermission.cs
- CommandEventArgs.cs
- ModifierKeysConverter.cs
- TextEffectResolver.cs
- RoutedCommand.cs
- XmlAttribute.cs
- SchemaAttDef.cs
- BrowsableAttribute.cs
- MimeWriter.cs
- ClientSettings.cs
- DbProviderFactoriesConfigurationHandler.cs
- FocusChangedEventArgs.cs
- MultiView.cs
- XmlSequenceWriter.cs
- BoundField.cs
- ProfileParameter.cs
- TypeElement.cs
- XmlObjectSerializerContext.cs
- NonVisualControlAttribute.cs
- DbConnectionOptions.cs
- DesignerSelectionListAdapter.cs
- DiagnosticTraceRecords.cs
- APCustomTypeDescriptor.cs
- ScriptReferenceBase.cs
- WindowsScrollBarBits.cs
- LinearKeyFrames.cs
- HiddenField.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- AppSettingsSection.cs
- SoapAttributeAttribute.cs
- Themes.cs
- PopupRootAutomationPeer.cs
- BaseParser.cs
- XPathDocumentIterator.cs
- IntSecurity.cs
- SecurityStandardsManager.cs
- EventListener.cs
- SoapFault.cs
- Barrier.cs
- StrokeDescriptor.cs
- DriveNotFoundException.cs
- DataRowComparer.cs
- Int32RectConverter.cs
- XomlCompilerHelpers.cs
- Vector3DAnimation.cs
- AutoGeneratedFieldProperties.cs
- AccessDataSourceDesigner.cs
- BufferedStream.cs
- DataPointer.cs
- RotateTransform3D.cs
- SqlBinder.cs
- FileSystemInfo.cs
- PageContentCollection.cs
- CodeChecksumPragma.cs
- DbProviderManifest.cs
- DefaultMemberAttribute.cs
- MetadataItem_Static.cs
- CodeStatement.cs