System::Xml::XPath::XPathNavigator Class Reference

Inherits System::Xml::XPath::XPathItem, and System::Xml::XPath::IXPathNavigable.

Public Types

typedef SharedPtr< XPathNavigatorPtr
 An alias for shared pointer to an instance of this class. More...
 
- Public Types inherited from System::Xml::XPath::XPathItem
typedef SharedPtr< XPathItemPtr
 An alias for shared pointer to an instance of this class. More...
 
- Public Types inherited from System::Object
typedef SmartPtr< Objectptr
 Alias for smart pointer type. More...
 
typedef System::Details::SharedMembersType shared_members_type
 structure to keep list of shared pointers contained in object. More...
 

Public Member Functions

ASPOSECPP_SHARED_API String get_Name () const
 Returns the qualified name of the current node. More...
 
ASPOSECPP_SHARED_API String get_LocalName () const
 Returns the local name of the current node. More...
 
ASPOSECPP_SHARED_API String get_Prefix () const
 Returns the prefix of the current node. More...
 
ASPOSECPP_SHARED_API String get_NamespaceURI () const
 Returns the namespace URI of the current node. More...
 
ASPOSECPP_SHARED_API String get_Value () const override
 Returns the value of the current node. More...
 
ASPOSECPP_SHARED_API String get_InnerText () const
 Returns the value of the current node. More...
 
ASPOSECPP_SHARED_API String get_InnerXml () const
 Returns a string containing all the content of the current node, including the markup, but excluding start and end tags. More...
 
ASPOSECPP_SHARED_API String get_OuterXml () const
 Returns a string containing all the content of the current node, including the markup, and including start and end tags. More...
 
ASPOSECPP_SHARED_API bool get_HasChildren () const
 Determines if the current node has any child nodes. More...
 
ASPOSECPP_SHARED_API bool get_HasAttributes () const
 Determines if the current node has any attributes. More...
 
bool get_CanEdit () const
 
ASPOSECPP_SHARED_API XPathNodeType get_NodeType () const
 Returns the type of the current node. More...
 
ASPOSECPP_SHARED_API int get_ValueAsInt () const override
 Returns the current node's value as a 32-bit integer. More...
 
ASPOSECPP_SHARED_API System::DateTime get_ValueAsDateTime () const override
 Returns the current node's value as an instance of DateTime object. More...
 
ASPOSECPP_SHARED_API double get_ValueAsDouble () const override
 Returns the current node's value as a double-precision floating point number.|. More...
 
ASPOSECPP_SHARED_API int64_t get_ValueAsLong () const override
 Returns the current node's value as a 64-bit integer. More...
 
virtual ASPOSECPP_SHARED_API SharedPtr< XmlNameTableget_NameTable () const
 Returns the name tabel used by the current object. More...
 
ASPOSECPP_SHARED_API bool MoveTo (const XPathNavigator::Ptr &other)
 
ASPOSECPP_SHARED_API bool MoveToFirst ()
 
ASPOSECPP_SHARED_API bool MoveToFirstChild ()
 
ASPOSECPP_SHARED_API void MoveToRoot ()
 
ASPOSECPP_SHARED_API bool MoveToNext ()
 
ASPOSECPP_SHARED_API bool MoveToPrevious ()
 
ASPOSECPP_SHARED_API bool MoveToParent ()
 
ASPOSECPP_SHARED_API bool MoveToAttribute (const String &localName, const String &namespaceURI)
 
ASPOSECPP_SHARED_API bool MoveToFirstAttribute ()
 
ASPOSECPP_SHARED_API bool MoveToNextAttribute ()
 
ASPOSECPP_SHARED_API String GetAttribute (const String &localName, const String &namespaceURI) const
 
ASPOSECPP_SHARED_API SharedPtr< ObjectEvaluate (const SharedPtr< XPathExpression > &expr)
 
ASPOSECPP_SHARED_API SharedPtr< XPathNodeIteratorSelect (const String &xpath)
 
ASPOSECPP_SHARED_API SharedPtr< XPathNodeIteratorSelect (const String &xpath, const SharedPtr< System::Xml::XmlNamespaceManager > &ns)
 
ASPOSECPP_SHARED_API SharedPtr< XPathNodeIteratorSelect (const SharedPtr< XPathExpression > &expr)
 
ASPOSECPP_SHARED_API XPathNavigator::Ptr SelectSingleNode (const String &xpath)
 
ASPOSECPP_SHARED_API XPathNavigator::Ptr SelectSingleNode (const String &xpath, const SharedPtr< System::Xml::XmlNamespaceManager > &ns)
 
ASPOSECPP_SHARED_API XPathNavigator::Ptr SelectSingleNode (const SharedPtr< XPathExpression > &expr)
 
ASPOSECPP_SHARED_API SharedPtr< XPathNodeIteratorSelectChildren (XPathNodeType type)
 
ASPOSECPP_SHARED_API SharedPtr< XPathNodeIteratorSelectChildren (const String &name, const String &namespaceURI)
 
ASPOSECPP_SHARED_API SharedPtr< XPathExpressionCompile (const String &xpath) const
 
ASPOSECPP_SHARED_API bool Matches (const String &xpath) const
 
ASPOSECPP_SHARED_API bool Matches (const SharedPtr< XPathExpression > &xpath) const
 
ASPOSECPP_SHARED_API XPathNavigator::Ptr CreateNavigator () override
 Returns a copy of the current XPathNavigator object. More...
 
const SharedPtr< XPathDocument > & GetDocument ()
 Returns an XPathDocument object associated with the current XPathNavigator object. More...
 
xmlXPathContext * native_ctx () const
 Returns a pointer to the underlying libxml2 xmlXPathContext object used by the current object. More...
 
- Public Member Functions inherited from System::Object
ASPOSECPP_SHARED_API Object ()
 Creates object. Initializes all internal data structures. More...
 
virtual ASPOSECPP_SHARED_API ~Object ()
 Destroys object. Frees all internal data structures. More...
 
ASPOSECPP_SHARED_API Object (Object const &x)
 Copy constructor. Doesn't copy anything, really, just initializes new object and enables copy constructing subclasses. More...
 
Objectoperator= (Object const &x)
 Assignment operator. Doesn't copy anything, really, just initializes new object and enables copy constructing subclasses. More...
 
ObjectSharedRefAdded ()
 Increments shared reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
int SharedRefRemovedSafe ()
 Decrements and returns shared reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
int RemovedSharedRefs (int count)
 Decreases shared reference count by specified value. More...
 
Detail::SmartPtrCounter * WeakRefAdded ()
 Increments weak reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
void WeakRefRemoved ()
 Decrements weak reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
Detail::SmartPtrCounter * GetCounter ()
 Gets reference counter data structure associated with the object. More...
 
int SharedCount () const
 Gets current value of shared refernce counter. More...
 
ASPOSECPP_SHARED_API void Lock ()
 Implements C# lock() statement locking. Call directly or use LockContext sentry object. More...
 
ASPOSECPP_SHARED_API void Unlock ()
 Implements C# lock() statement unlocking. Call directly or use LockContext sentry object. More...
 
virtual ASPOSECPP_SHARED_API bool Equals (ptr obj)
 Compares objects using C# Object.Equals semantics. More...
 
virtual ASPOSECPP_SHARED_API int GetHashCode () const
 Analog of C# Object.GetHashCode() method. Enables hashing of custom objects. More...
 
virtual ASPOSECPP_SHARED_API String ToString () const
 Analog of C# Object.ToString() method. Enables converting custom objects to string. More...
 
virtual ASPOSECPP_SHARED_API ptr MemberwiseClone () const
 Analog of C# Object.MemberwiseClone() method. Enables cloning custom types. More...
 
virtual ASPOSECPP_SHARED_API const TypeInfoGetType () const
 Gets actual type of object. Analog of C# System.Object.GetType() call. More...
 
virtual ASPOSECPP_SHARED_API bool Is (const TypeInfo &targetType) const
 Check if object represents an instance of type described by targetType. Analog of C# 'is' operator. More...
 
virtual ASPOSECPP_SHARED_API void SetTemplateWeakPtr (unsigned int argument)
 Set n'th template argument a weak pointer (rather than shared). Allows switching pointers in containers to weak mode. More...
 
template<>
bool Equals (float const &objA, float const &objB)
 
template<>
bool Equals (double const &objA, double const &objB)
 
template<>
bool ReferenceEquals (String const &str, std::nullptr_t)
 
template<>
bool ReferenceEquals (String const &str1, String const &str2)
 

Protected Member Functions

ASPOSECPP_SHARED_API XPathNavigator ()
 Constructs a new instance of XPathNavigator class. More...
 
ASPOSECPP_SHARED_API XPathNavigator (const SharedPtr< XPathDocument > &document, xmlXPathContext *ctx, xmlNode *node=nullptr)
 
virtual ASPOSECPP_SHARED_API ~XPathNavigator ()
 Destructor. More...
 
ASPOSECPP_SHARED_API bool SetContextNode (xmlNode *node)
 

Additional Inherited Members

- Static Public Member Functions inherited from System::Object
static bool ReferenceEquals (ptr const &objA, ptr const &objB)
 Compares objects by reference. More...
 
template<typename T >
static std::enable_if<!IsSmartPtr< T >::value, bool >::type ReferenceEquals (T const &objA, T const &objB)
 Compares objects by reference. More...
 
template<typename T >
static std::enable_if<!IsSmartPtr< T >::value, bool >::type ReferenceEquals (T const &objA, std::nullptr_t)
 Reference-compares value type object with nullptr. More...
 
template<typename T1 , typename T2 >
static std::enable_if< IsSmartPtr< T1 >::value &&IsSmartPtr< T2 >::value, bool >::type Equals (T1 const &objA, T2 const &objB)
 Compares reference type objects in C# style. More...
 
template<typename T1 , typename T2 >
static std::enable_if<!IsSmartPtr< T1 >::value &&!IsSmartPtr< T2 >::value, bool >::type Equals (T1 const &objA, T2 const &objB)
 Compares value type objects in C# style. More...
 
static const TypeInfoType ()
 Impleemnts C# typeof(System.Object) construct. More...
 

Detailed Description

Allows navigating and editing XML data. Objects of this class should only be allocated using System::MakeObject() function. Never create instance of this type on stack or using operator new, as it will result in runtime errors and/or assertion faults. Always wrap this class into System::SmartPtr pointer and use this pointer to pass it to functions as argument.

Member Typedef Documentation

◆ Ptr

An alias for shared pointer to an instance of this class.

Constructor & Destructor Documentation

◆ XPathNavigator() [1/2]

ASPOSECPP_SHARED_API System::Xml::XPath::XPathNavigator::XPathNavigator ( )
protected

Constructs a new instance of XPathNavigator class.

◆ XPathNavigator() [2/2]

ASPOSECPP_SHARED_API System::Xml::XPath::XPathNavigator::XPathNavigator ( const SharedPtr< XPathDocument > &  document,
xmlXPathContext *  ctx,
xmlNode *  node = nullptr 
)
protected

Constructs a new instance of XPathNavigator class for navigating through the specified XPathDocument using the specified context.

Parameters
documentThe document to navigate through
ctxThe XPath context to use
nodeThe node in the document to set as a context node or null in which case the specified document's root node will be set as context node

◆ ~XPathNavigator()

virtual ASPOSECPP_SHARED_API System::Xml::XPath::XPathNavigator::~XPathNavigator ( )
protectedvirtual

Destructor.

Member Function Documentation

◆ Compile()

ASPOSECPP_SHARED_API SharedPtr<XPathExpression> System::Xml::XPath::XPathNavigator::Compile ( const String xpath) const

Constructs an XPathExpression object that represents the specifed XPath expression.

Parameters
xpathThe string representation of an XPath expression
Returns
An XPathExpression object that represents xpath expression

◆ CreateNavigator()

ASPOSECPP_SHARED_API XPathNavigator::Ptr System::Xml::XPath::XPathNavigator::CreateNavigator ( )
overridevirtual

Returns a copy of the current XPathNavigator object.

Implements System::Xml::XPath::IXPathNavigable.

◆ Evaluate()

ASPOSECPP_SHARED_API SharedPtr<Object> System::Xml::XPath::XPathNavigator::Evaluate ( const SharedPtr< XPathExpression > &  expr)

Evaluate the XPath expression.

Parameters
exprAn XPath expression
Returns
The result of the expression

◆ get_CanEdit()

bool System::Xml::XPath::XPathNavigator::get_CanEdit ( ) const
inline

Determines if the XPathNavigator object can edit the underlying XML data.

Returns
Always false

◆ get_HasAttributes()

ASPOSECPP_SHARED_API bool System::Xml::XPath::XPathNavigator::get_HasAttributes ( ) const

Determines if the current node has any attributes.

◆ get_HasChildren()

ASPOSECPP_SHARED_API bool System::Xml::XPath::XPathNavigator::get_HasChildren ( ) const

Determines if the current node has any child nodes.

◆ get_InnerText()

ASPOSECPP_SHARED_API String System::Xml::XPath::XPathNavigator::get_InnerText ( ) const

Returns the value of the current node.

◆ get_InnerXml()

ASPOSECPP_SHARED_API String System::Xml::XPath::XPathNavigator::get_InnerXml ( ) const

Returns a string containing all the content of the current node, including the markup, but excluding start and end tags.

◆ get_LocalName()

ASPOSECPP_SHARED_API String System::Xml::XPath::XPathNavigator::get_LocalName ( ) const

Returns the local name of the current node.

◆ get_Name()

ASPOSECPP_SHARED_API String System::Xml::XPath::XPathNavigator::get_Name ( ) const

Returns the qualified name of the current node.

◆ get_NamespaceURI()

ASPOSECPP_SHARED_API String System::Xml::XPath::XPathNavigator::get_NamespaceURI ( ) const

Returns the namespace URI of the current node.

◆ get_NameTable()

virtual ASPOSECPP_SHARED_API SharedPtr<XmlNameTable> System::Xml::XPath::XPathNavigator::get_NameTable ( ) const
virtual

Returns the name tabel used by the current object.

◆ get_NodeType()

ASPOSECPP_SHARED_API XPathNodeType System::Xml::XPath::XPathNavigator::get_NodeType ( ) const

Returns the type of the current node.

◆ get_OuterXml()

ASPOSECPP_SHARED_API String System::Xml::XPath::XPathNavigator::get_OuterXml ( ) const

Returns a string containing all the content of the current node, including the markup, and including start and end tags.

◆ get_Prefix()

ASPOSECPP_SHARED_API String System::Xml::XPath::XPathNavigator::get_Prefix ( ) const

Returns the prefix of the current node.

◆ get_Value()

ASPOSECPP_SHARED_API String System::Xml::XPath::XPathNavigator::get_Value ( ) const
overridevirtual

Returns the value of the current node.

Implements System::Xml::XPath::XPathItem.

◆ get_ValueAsDateTime()

ASPOSECPP_SHARED_API System::DateTime System::Xml::XPath::XPathNavigator::get_ValueAsDateTime ( ) const
overridevirtual

Returns the current node's value as an instance of DateTime object.

Implements System::Xml::XPath::XPathItem.

◆ get_ValueAsDouble()

ASPOSECPP_SHARED_API double System::Xml::XPath::XPathNavigator::get_ValueAsDouble ( ) const
overridevirtual

Returns the current node's value as a double-precision floating point number.|.

Implements System::Xml::XPath::XPathItem.

◆ get_ValueAsInt()

ASPOSECPP_SHARED_API int System::Xml::XPath::XPathNavigator::get_ValueAsInt ( ) const
overridevirtual

Returns the current node's value as a 32-bit integer.

Implements System::Xml::XPath::XPathItem.

◆ get_ValueAsLong()

ASPOSECPP_SHARED_API int64_t System::Xml::XPath::XPathNavigator::get_ValueAsLong ( ) const
overridevirtual

Returns the current node's value as a 64-bit integer.

Implements System::Xml::XPath::XPathItem.

◆ GetAttribute()

ASPOSECPP_SHARED_API String System::Xml::XPath::XPathNavigator::GetAttribute ( const String localName,
const String namespaceURI 
) const

Returns the value of the current node's attribute whose local name and namespace URI match the specified values.

Parameters
localNameThe local name of the attribute
namespaceURIThe namespace URI of the attribute
Returns
The value of the attribute with local name matches localName and namespace URI matches namespaceURI

◆ GetDocument()

const SharedPtr<XPathDocument>& System::Xml::XPath::XPathNavigator::GetDocument ( )
inline

Returns an XPathDocument object associated with the current XPathNavigator object.

◆ Matches() [1/2]

ASPOSECPP_SHARED_API bool System::Xml::XPath::XPathNavigator::Matches ( const String xpath) const

Determines if the current node matches the specified XPath expression represented as string.

Parameters
xpathThe XPath expression represeted as string
Returns
True if the current node matches xpath, otherwise - false

◆ Matches() [2/2]

ASPOSECPP_SHARED_API bool System::Xml::XPath::XPathNavigator::Matches ( const SharedPtr< XPathExpression > &  xpath) const

Determines if the current node matches the specified XPath expression.

Parameters
xpathThe XPath expression
Returns
True if the current node matches xpath, otherwise - false

◆ MoveTo()

ASPOSECPP_SHARED_API bool System::Xml::XPath::XPathNavigator::MoveTo ( const XPathNavigator::Ptr other)

Moves the the current XPathNavigator to the position equal to that of the specified XPathNavigator.

Parameters
otherThe reference XPathNavigator
Returns
True if the operation succeeded, otherwise - false

◆ MoveToAttribute()

ASPOSECPP_SHARED_API bool System::Xml::XPath::XPathNavigator::MoveToAttribute ( const String localName,
const String namespaceURI 
)

Moves the the current XPathNavigator to the attribute of the current node whose local name and namespace URI match the specified values.

Parameters
localNameThe local name of the attribute
namespaceURIThe namespace URI of the attribute
Returns
True if the operation succeeded, otherwise - false

◆ MoveToFirst()

ASPOSECPP_SHARED_API bool System::Xml::XPath::XPathNavigator::MoveToFirst ( )

Moves the the current XPathNavigator to the first sibling of the current node.

Returns
True if the operation succeeded, otherwise - false

◆ MoveToFirstAttribute()

ASPOSECPP_SHARED_API bool System::Xml::XPath::XPathNavigator::MoveToFirstAttribute ( )

Moves the the current XPathNavigator to the first attribute of the current node.

Returns
True if the operation succeeded, otherwise - false

◆ MoveToFirstChild()

ASPOSECPP_SHARED_API bool System::Xml::XPath::XPathNavigator::MoveToFirstChild ( )

Moves the the current XPathNavigator to the first child node of the current node.

Returns
True if the operation succeeded, otherwise - false

◆ MoveToNext()

ASPOSECPP_SHARED_API bool System::Xml::XPath::XPathNavigator::MoveToNext ( )

Moves the the current XPathNavigator to the next sibling node of the current node.

Returns
True if the operation succeeded, otherwise - false

◆ MoveToNextAttribute()

ASPOSECPP_SHARED_API bool System::Xml::XPath::XPathNavigator::MoveToNextAttribute ( )

Moves the the current XPathNavigator to the next attribute of the current node.

Returns
True if the operation succeeded, otherwise - false

◆ MoveToParent()

ASPOSECPP_SHARED_API bool System::Xml::XPath::XPathNavigator::MoveToParent ( )

Moves the the current XPathNavigator to the parent node of the current node.

Returns
True if the operation succeeded, otherwise - false

◆ MoveToPrevious()

ASPOSECPP_SHARED_API bool System::Xml::XPath::XPathNavigator::MoveToPrevious ( )

Moves the the current XPathNavigator to the previous child node of the current node.

Returns
True if the operation succeeded, otherwise - false

◆ MoveToRoot()

ASPOSECPP_SHARED_API void System::Xml::XPath::XPathNavigator::MoveToRoot ( )

Moves the the current XPathNavigator to the root node of the current node.

Returns
True if the operation succeeded, otherwise - false

◆ native_ctx()

xmlXPathContext* System::Xml::XPath::XPathNavigator::native_ctx ( ) const
inline

Returns a pointer to the underlying libxml2 xmlXPathContext object used by the current object.

◆ Select() [1/3]

ASPOSECPP_SHARED_API SharedPtr<XPathNodeIterator> System::Xml::XPath::XPathNavigator::Select ( const String xpath)

Select a set of nodes using the specified XPath expression.

Parameters
xpathA string representation of XPath expression
Returns
An iterator pointing to the selected nodes set

◆ Select() [2/3]

ASPOSECPP_SHARED_API SharedPtr<XPathNodeIterator> System::Xml::XPath::XPathNavigator::Select ( const String xpath,
const SharedPtr< System::Xml::XmlNamespaceManager > &  ns 
)

Select a set of nodes using the specified XPath expression.

Parameters
xpathXPath expression
nsNOT USED, must be null
Returns
An iterator pointing to the selected nodes set

◆ Select() [3/3]

ASPOSECPP_SHARED_API SharedPtr<XPathNodeIterator> System::Xml::XPath::XPathNavigator::Select ( const SharedPtr< XPathExpression > &  expr)

Select a set of nodes using the specified XPath expression represented as XPathExpression object.

Parameters
exprAn XPath expression
Returns
An iterator pointing to the selected nodes set

◆ SelectChildren() [1/2]

ASPOSECPP_SHARED_API SharedPtr<XPathNodeIterator> System::Xml::XPath::XPathNavigator::SelectChildren ( XPathNodeType  type)

NOT IMPLEMENTED

Exceptions
NotImplementedExceptionAlways

◆ SelectChildren() [2/2]

ASPOSECPP_SHARED_API SharedPtr<XPathNodeIterator> System::Xml::XPath::XPathNavigator::SelectChildren ( const String name,
const String namespaceURI 
)

NOT IMPLEMENTED

Exceptions
NotImplementedExceptionAlways

◆ SelectSingleNode() [1/3]

ASPOSECPP_SHARED_API XPathNavigator::Ptr System::Xml::XPath::XPathNavigator::SelectSingleNode ( const String xpath)

Selecs the first node in the current XPathNavigator using the specified XPath expression.

Parameters
xpathA string representation of XPath expression
Returns
The selected node

◆ SelectSingleNode() [2/3]

ASPOSECPP_SHARED_API XPathNavigator::Ptr System::Xml::XPath::XPathNavigator::SelectSingleNode ( const String xpath,
const SharedPtr< System::Xml::XmlNamespaceManager > &  ns 
)

Selecs the first node in the current XPathNavigator using the specified XPath expression.

Parameters
xpathA string representation of XPath expression
nsNamespace manager to use
Returns
The selected node

◆ SelectSingleNode() [3/3]

ASPOSECPP_SHARED_API XPathNavigator::Ptr System::Xml::XPath::XPathNavigator::SelectSingleNode ( const SharedPtr< XPathExpression > &  expr)

Selecs the first node in the current XPathNavigator using the specified XPath expression.

Parameters
exprA string representation of XPath expression
Returns
The selected node

◆ SetContextNode()

ASPOSECPP_SHARED_API bool System::Xml::XPath::XPathNavigator::SetContextNode ( xmlNode *  node)
protected

Sets the specified node as a context node.

Parameters
nodeThe node to set as a context node
Returns
True if the operation succeeded, otherwise - false