Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / XPathBinder.cs / 1305376 / 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.Xml;
using System.Xml.XPath;
///
///
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ToolStripComboBox.cs
- MetadataArtifactLoaderComposite.cs
- QilPatternFactory.cs
- PathData.cs
- MulticastIPAddressInformationCollection.cs
- ExtensionFile.cs
- TemplateKeyConverter.cs
- DynamicRendererThreadManager.cs
- Ref.cs
- WebScriptMetadataMessageEncoderFactory.cs
- ACE.cs
- SchemaRegistration.cs
- ConnectionStringSettings.cs
- XmlSerializationWriter.cs
- DataGridViewDataConnection.cs
- HtmlTableCell.cs
- Pair.cs
- ButtonFieldBase.cs
- IntSecurity.cs
- UriExt.cs
- ClientSession.cs
- _ConnectOverlappedAsyncResult.cs
- XmlSchemaSimpleContent.cs
- BinaryMessageFormatter.cs
- StringAnimationBase.cs
- AuthStoreRoleProvider.cs
- ResourceSet.cs
- HostSecurityManager.cs
- MailBnfHelper.cs
- WhitespaceRuleReader.cs
- TextureBrush.cs
- WebPartEditorApplyVerb.cs
- NameValueCollection.cs
- OleDbCommandBuilder.cs
- DescendentsWalker.cs
- AuthenticationService.cs
- CustomLineCap.cs
- DependencyPropertyConverter.cs
- UnionCodeGroup.cs
- FlowDocumentPage.cs
- SqlDataSourceAdvancedOptionsForm.cs
- ObjectQuery_EntitySqlExtensions.cs
- RegexMatchCollection.cs
- ActivityInstanceReference.cs
- BaseValidator.cs
- OutputScope.cs
- PrimitiveDataContract.cs
- UrlMappingsSection.cs
- Expr.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- ListViewEditEventArgs.cs
- PathFigure.cs
- Pair.cs
- GraphicsPathIterator.cs
- TreeViewCancelEvent.cs
- SetterBaseCollection.cs
- VectorAnimationBase.cs
- XmlChildNodes.cs
- Localizer.cs
- AlignmentXValidation.cs
- JavaScriptSerializer.cs
- ExpressionBuilderContext.cs
- StateDesignerConnector.cs
- ProfileEventArgs.cs
- Debug.cs
- DigestTraceRecordHelper.cs
- UnmanagedMarshal.cs
- Button.cs
- EventToken.cs
- ConfigurationUtility.cs
- XmlDictionaryString.cs
- TreeNodeBinding.cs
- SoapExtensionReflector.cs
- DataGridViewCellConverter.cs
- SoapWriter.cs
- SerialPinChanges.cs
- CookieParameter.cs
- EncoderFallback.cs
- MediaTimeline.cs
- Binding.cs
- FontNamesConverter.cs
- DefaultCommandConverter.cs
- UnSafeCharBuffer.cs
- NetStream.cs
- ByValueEqualityComparer.cs
- SystemIPGlobalProperties.cs
- CustomAttributeFormatException.cs
- GridErrorDlg.cs
- OdbcParameter.cs
- EditCommandColumn.cs
- Model3D.cs
- serverconfig.cs
- BaseDataListPage.cs
- PathData.cs
- FormCollection.cs
- FontDialog.cs
- WorkflowLayouts.cs
- MetadataArtifactLoaderFile.cs
- ReadOnlyAttribute.cs
- NodeLabelEditEvent.cs