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

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. More...

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...
 

Public Member Functions

String get_Name () const
 Returns the qualified name of the current node. More...
 
String get_LocalName () const
 Returns the local name of the current node. More...
 
String get_Prefix () const
 Returns the prefix of the current node. More...
 
String get_NamespaceURI () const
 Returns the namespace URI of the current node. More...
 
String get_Value () const override
 Returns the value of the current node. More...
 
String get_InnerText () const
 Returns the value of the current node. More...
 
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...
 
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...
 
bool get_HasChildren () const
 Determines if the current node has any child nodes. More...
 
bool get_HasAttributes () const
 Determines if the current node has any attributes. More...
 
bool get_CanEdit () const
 Determines if the XPathNavigator object can edit the underlying XML data. More...
 
XPathNodeType get_NodeType () const
 Returns the type of the current node. More...
 
int get_ValueAsInt () const override
 Returns the current node's value as a 32-bit integer. More...
 
System::DateTime get_ValueAsDateTime () const override
 Returns the current node's value as an instance of DateTime object. More...
 
double get_ValueAsDouble () const override
 Returns the current node's value as a double-precision floating point number.|. More...
 
int64_t get_ValueAsLong () const override
 Returns the current node's value as a 64-bit integer. More...
 
virtual SharedPtr< XmlNameTableget_NameTable () const
 Returns the name table used by the current object. More...
 
bool MoveTo (const XPathNavigator::Ptr &other)
 Moves the the current XPathNavigator to the position equal to that of the specified XPathNavigator. More...
 
bool MoveToFirst ()
 Moves the the current XPathNavigator to the first sibling of the current node. More...
 
bool MoveToFirstChild ()
 Moves the the current XPathNavigator to the first child node of the current node. More...
 
void MoveToRoot ()
 Moves the the current XPathNavigator to the root node of the current node. More...
 
bool MoveToNext ()
 Moves the the current XPathNavigator to the next sibling node of the current node. More...
 
bool MoveToPrevious ()
 Moves the the current XPathNavigator to the previous child node of the current node. More...
 
bool MoveToParent ()
 Moves the the current XPathNavigator to the parent node of the current node. More...
 
bool 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. More...
 
bool MoveToFirstAttribute ()
 Moves the the current XPathNavigator to the first attribute of the current node. More...
 
bool MoveToNextAttribute ()
 Moves the the current XPathNavigator to the next attribute of the current node. More...
 
String 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. More...
 
SharedPtr< ObjectEvaluate (const SharedPtr< XPathExpression > &expr)
 Evaluate the XPath expression. More...
 
SharedPtr< ObjectEvaluate (const String &xpath)
 Evaluate the XPath expression. More...
 
SharedPtr< XPathNodeIteratorSelect (const String &xpath)
 Select a set of nodes using the specified XPath expression. More...
 
SharedPtr< XPathNodeIteratorSelect (const String &xpath, const SharedPtr< System::Xml::XmlNamespaceManager > &ns)
 Select a set of nodes using the specified XPath expression. More...
 
SharedPtr< XPathNodeIteratorSelect (const SharedPtr< XPathExpression > &expr)
 Select a set of nodes using the specified XPath expression represented as XPathExpression object. More...
 
XPathNavigator::Ptr SelectSingleNode (const String &xpath)
 Selects the first node in the current XPathNavigator using the specified XPath expression. More...
 
XPathNavigator::Ptr SelectSingleNode (const String &xpath, const SharedPtr< System::Xml::XmlNamespaceManager > &ns)
 Selects the first node in the current XPathNavigator using the specified XPath expression. More...
 
XPathNavigator::Ptr SelectSingleNode (const SharedPtr< XPathExpression > &expr)
 Selects the first node in the current XPathNavigator using the specified XPath expression. More...
 
SharedPtr< XPathNodeIteratorSelectChildren (XPathNodeType type)
 NOT IMPLEMENTED. More...
 
SharedPtr< XPathNodeIteratorSelectChildren (const String &name, const String &namespaceURI)
 NOT IMPLEMENTED. More...
 
SharedPtr< XPathExpressionCompile (const String &xpath) const
 Constructs an XPathExpression object that represents the specified XPath expression. More...
 
bool Matches (const String &xpath) const
 Determines if the current node matches the specified XPath expression represented as string. More...
 
bool Matches (const SharedPtr< XPathExpression > &xpath) const
 Determines if the current node matches the specified XPath expression. More...
 
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
 Object ()
 Creates object. Initializes all internal data structures. More...
 
virtual ~Object ()
 Destroys object. Frees all internal data structures. More...
 
 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 reference counter. More...
 
void Lock ()
 Implements C# lock() statement locking. Call directly or use LockContext sentry object. More...
 
void Unlock ()
 Implements C# lock() statement unlocking. Call directly or use LockContext sentry object. More...
 
virtual bool Equals (ptr obj)
 Compares objects using C# Object.Equals semantics. More...
 
virtual int32_t GetHashCode () const
 Analog of C# Object.GetHashCode() method. Enables hashing of custom objects. More...
 
virtual String ToString () const
 Analog of C# Object.ToString() method. Enables converting custom objects to string. More...
 
virtual ptr MemberwiseClone () const
 Analog of C# Object.MemberwiseClone() method. Enables cloning custom types. More...
 
virtual const TypeInfoGetType () const
 Gets actual type of object. Analog of C# System.Object.GetType() call. More...
 
virtual bool Is (const TypeInfo &targetType) const
 Check if object represents an instance of type described by targetType. Analog of C# 'is' operator. More...
 
virtual void SetTemplateWeakPtr (uint32_t argument)
 Set n'th template argument a weak pointer (rather than shared). Allows switching pointers in containers to weak mode. More...
 
virtual bool FastCast (const Details::FastRttiBase &helper, void **out_ptr) const
 For internal purposes only. More...
 
template<>
bool ReferenceEquals (String const &str, std::nullptr_t)
 Specialization of Object::ReferenceEquals for case of string and nullptr. More...
 
template<>
bool ReferenceEquals (String const &str1, String const &str2)
 Specialization of Object::ReferenceEquals for case of strings. More...
 

Protected Member Functions

 XPathNavigator ()
 Constructs a new instance of XPathNavigator class. More...
 
 XPathNavigator (const SharedPtr< XPathDocument > &document, xmlXPathContext *ctx, xmlNode *node=nullptr)
 Constructs a new instance of XPathNavigator class for navigating through the specified XPathDocument using the specified context. More...
 
virtual ~XPathNavigator ()
 Destructor. More...
 
bool SetContextNode (xmlNode *node)
 Sets the specified node as a context node. More...
 

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 ()
 Implements C# typeof(System.Object) construct. More...
 
template<>
bool Equals (float const &objA, float const &objB)
 Emulates C#-style floating point comparison where two NaNs are considered equal even though according to IEC 60559:1989 NaN is not equal to any value, including NaN. More...
 
template<>
bool Equals (double const &objA, double const &objB)
 Emulates C#-style floating point comparison where two NaNs are considered equal even though according to IEC 60559:1989 NaN is not equal to any value, including NaN. 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]

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

Constructs a new instance of XPathNavigator class.

◆ XPathNavigator() [2/2]

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 System::Xml::XPath::XPathNavigator::~XPathNavigator ( )
protectedvirtual

Destructor.

Member Function Documentation

◆ Compile()

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

Constructs an XPathExpression object that represents the specified XPath expression.

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

◆ CreateNavigator()

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

Returns a copy of the current XPathNavigator object.

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

◆ Evaluate() [1/2]

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

◆ Evaluate() [2/2]

SharedPtr<Object> System::Xml::XPath::XPathNavigator::Evaluate ( const String xpath)

Evaluate the XPath expression.

Parameters
xpathAn 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()

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

Determines if the current node has any attributes.

◆ get_HasChildren()

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

Determines if the current node has any child nodes.

◆ get_InnerText()

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

Returns the value of the current node.

◆ get_InnerXml()

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()

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

Returns the local name of the current node.

◆ get_Name()

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

Returns the qualified name of the current node.

◆ get_NamespaceURI()

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

Returns the namespace URI of the current node.

◆ get_NameTable()

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

Returns the name table used by the current object.

◆ get_NodeType()

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

Returns the type of the current node.

◆ get_OuterXml()

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()

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

Returns the prefix of the current node.

◆ get_Value()

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

Returns the value of the current node.

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

◆ get_ValueAsDateTime()

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()

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()

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()

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()

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]

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

◆ Matches() [2/2]

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 represented as string
Returns
True if the current node matches xpath, otherwise - false

◆ MoveTo()

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()

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()

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()

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()

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()

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()

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()

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()

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()

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

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

◆ 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]

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

◆ Select() [2/3]

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() [3/3]

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

◆ SelectChildren() [1/2]

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

NOT IMPLEMENTED.

Exceptions
NotImplementedExceptionAlways

◆ SelectChildren() [2/2]

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

NOT IMPLEMENTED.

Exceptions
NotImplementedExceptionAlways

◆ SelectSingleNode() [1/3]

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

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

Parameters
exprA string representation of XPath expression
Returns
The selected node

◆ SelectSingleNode() [2/3]

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

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

Parameters
xpathA string representation of XPath expression
Returns
The selected node

◆ SelectSingleNode() [3/3]

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

Selects 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

◆ SetContextNode()

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