Yate
XPath Class Reference

XML Path holder. More...

#include <yatexml.h>

Inheritance diagram for XPath:
String GenObject

Public Types

enum  Flags {
  LateParse = 0x0001 , StrictParse = 0x0002 , IgnoreEmptyResult = 0x0004 , NoXmlNameCheck = 0x0008 ,
  FInternal = 0xff00 , FAbsolute = 0x0100 , FCopying = 0x0200
}
 
enum  Find { FindXml = 0x01 , FindText = 0x02 , FindAttr = 0x04 , FindAny = FindXml | FindText | FindAttr }
 
enum  Status {
  NoError = 0 , EEmptyItem , ESyntax , ERange ,
  ESemantic , EEmptyResult , NotParsed
}
 
- Public Types inherited from String
enum  Align { Left = 0 , Center , Right }
 

Public Member Functions

 XPath (const char *value=0, unsigned int flags=0)
 
 XPath (const XPath &other)
 
virtual ~XPath ()
 
bool absolute () const
 
unsigned int status () const
 
unsigned int errorItem () const
 
const Stringerror () const
 
StringdescribeError (String &buf) const
 
unsigned int parse ()
 
const GenObjectfind (const XmlElement &xml, unsigned int what, ObjList *list=0) const
 
XmlElementfindXml (const XmlElement &xml, ObjList *list=0) const
 
const StringfindText (const XmlElement &xml, ObjList *list=0) const
 
Stringdump (String &buf, bool escape=true, const char *itemSep="\r\n", bool sepFirst=true) const
 
void dump (ObjList &lst, bool escape=true) const
 
XPathoperator= (const XPath &other)
 
- Public Member Functions inherited from String
 String ()
 
 String (const char *value, int len=-1)
 
 String (char value, unsigned int repeat=1)
 
 String (int32_t value)
 
 String (uint32_t value)
 
 String (int64_t value)
 
 String (uint64_t value)
 
 String (bool value)
 
 String (double value)
 
 String (const String &value)
 
 String (const String *value)
 
virtual ~String ()
 
virtual void * getObject (const String &name) const
 
const char * c_str () const
 
const char * safe () const
 
const char * safe (const char *defStr) const
 
unsigned int length () const
 
bool null () const
 
int lenUtf8 (uint32_t maxChar=0x10ffff, bool overlong=false) const
 
int fixUtf8 (const char *replace=0, uint32_t maxChar=0x10ffff, bool overlong=false)
 
unsigned int encodeFlags (const TokenDict *tokens) const
 
uint64_t encodeFlags (const TokenDict64 *tokens) const
 
StringdecodeFlags (unsigned int flags, const TokenDict *tokens, bool unknownflag=true)
 
StringdecodeFlags (uint64_t flags, const TokenDict64 *tokens, bool unknownflag=true)
 
bool checkBOM () const
 
bool stripBOM ()
 
unsigned int hash () const
 
void clear ()
 
char at (int index) const
 
String substr (int offs, int len=-1) const
 
StringtrimBlanks ()
 
StringtrimSpaces ()
 
virtual const StringtoString () const
 
int toInteger (int defvalue=0, int base=0, int minvalue=INT_MIN, int maxvalue=INT_MAX, bool clamp=true) const
 
int toInteger (const TokenDict *tokens, int defvalue=0, int base=0) const
 
int toInteger (const TokenDictStr *tokens, int defvalue=0, int base=0) const
 
long int toLong (long int defvalue=0, int base=0, long int minvalue=LONG_MIN, long int maxvalue=LONG_MAX, bool clamp=true) const
 
int64_t toInt64 (int64_t defvalue=0, int base=0, int64_t minvalue=LLONG_MIN, int64_t maxvalue=LLONG_MAX, bool clamp=true) const
 
int64_t toInt64Dict (const TokenDict64 *tokens, int64_t defvalue=0, int base=0) const
 
int64_t toInt64Dict (const TokenDictStr64 *tokens, int64_t defvalue=0, int base=0) const
 
uint64_t toUInt64 (uint64_t defvalue=0, int base=0, uint64_t minvalue=0, uint64_t maxvalue=ULLONG_MAX, bool clamp=true) const
 
double toDouble (double defvalue=0.0) const
 
bool toBoolean (bool defvalue=false) const
 
bool isBoolean () const
 
StringtoUpper ()
 
StringtoLower ()
 
char operator[] (signed int index) const
 
char operator[] (unsigned int index) const
 
 operator const char * () const
 
Stringassign (const char *value, int len=-1)
 
Stringassign (char value, unsigned int repeat=1)
 
Stringhexify (const void *data, unsigned int len, char sep=0, bool upCase=false)
 
Stringoperator= (const String &value)
 
Stringoperator= (const String *value)
 
Stringoperator= (const char *value)
 
Stringoperator= (char value)
 
Stringoperator= (int32_t value)
 
Stringoperator= (uint32_t value)
 
Stringoperator= (int64_t value)
 
Stringoperator= (uint64_t value)
 
Stringoperator= (bool value)
 
Stringoperator= (double value)
 
Stringoperator+= (const char *value)
 
Stringoperator+= (char value)
 
Stringoperator+= (int32_t value)
 
Stringoperator+= (uint32_t value)
 
Stringoperator+= (int64_t value)
 
Stringoperator+= (uint64_t value)
 
Stringoperator+= (bool value)
 
Stringoperator+= (double value)
 
bool operator== (const char *value) const
 
bool operator!= (const char *value) const
 
bool operator== (const String &value) const
 
bool operator!= (const String &value) const
 
bool operator&= (const char *value) const
 
bool operator|= (const char *value) const
 
Stringoperator<< (const char *value)
 
Stringoperator<< (char value)
 
Stringoperator<< (int32_t value)
 
Stringoperator<< (uint32_t value)
 
Stringoperator<< (int64_t value)
 
Stringoperator<< (uint64_t value)
 
Stringoperator<< (bool value)
 
Stringoperator<< (double value)
 
Stringoperator>> (const char *skip)
 
Stringoperator>> (char &store)
 
Stringoperator>> (UChar &store)
 
Stringoperator>> (int &store)
 
Stringoperator>> (unsigned int &store)
 
Stringoperator>> (bool &store)
 
Stringappend (const char *value, int len)
 
Stringappend (const char *value, const char *separator=0, bool force=false)
 
Stringappend (const ObjList *list, const char *separator=0, bool force=false)
 
Stringappend (const ObjList &list, const char *separator=0, bool force=false)
 
Stringappend (char value, unsigned int len=1)
 
Stringappend (double value, unsigned int decimals=3)
 
Stringinsert (unsigned int pos, const char *value, int len=-1)
 
Stringinsert (unsigned int pos, char value, unsigned int len=1)
 
Stringprintf (const char *format,...)
 
Stringprintf (unsigned int length, const char *format,...)
 
StringprintfAppend (const char *format,...)
 
StringprintfAppend (unsigned int length, const char *format,...)
 
StringappendFixed (unsigned int fixedLength, const char *str, unsigned int len=-1, char fill=' ', int align=Left)
 
StringappendFixed (unsigned int fixedLength, const String &str, char fill=' ', int align=Left)
 
int find (char what, unsigned int offs=0) const
 
int find (const char *what, unsigned int offs=0) const
 
int rfind (char what) const
 
int rfind (const char *what) const
 
bool startsWith (const char *what, bool wordBreak=false, bool caseInsensitive=false) const
 
bool endsWith (const char *what, bool wordBreak=false, bool caseInsensitive=false) const
 
bool startSkip (const char *what, bool wordBreak=true, bool caseInsensitive=false)
 
StringreplaceChars (const char *what, const char *repl, bool inPlace=false, int wLen=-1, int rLen=-1, bool *chg=0)
 
StringremoveChars (const char *what, int wLen=-1, bool *chg=0)
 
StringextractTo (const char *sep, String &store)
 
StringextractTo (const char *sep, bool &store)
 
StringextractTo (const char *sep, int &store, int base=0)
 
StringextractTo (const char *sep, int &store, const TokenDict *tokens, int base=0)
 
StringextractTo (const char *sep, double &store)
 
virtual bool matches (const String &value) const
 
bool matches (const Regexp &rexp)
 
int matchOffset (int index=0) const
 
int matchLength (int index=0) const
 
String matchString (int index=0) const
 
String replaceMatches (const String &templ) const
 
int matchCount () const
 
ObjListsplit (ObjList &list, char separator, bool emptyOK=true) const
 
ObjListsplit (ObjList &list, const Regexp &reg, bool emptyOK=true) const
 
ObjListsplit (char separator, bool emptyOK=true) const
 
ObjListsplit (const Regexp &reg, bool emptyOK=true) const
 
String msgEscape (char extraEsc=0) const
 
String msgUnescape (int *errptr=0, char extraEsc=0) const
 
String sqlEscape (char extraEsc=0) const
 
StringuriEscapeTo (String &buf, char extraEsc=0, const char *noEsc=0) const
 
String uriEscape (char extraEsc=0, const char *noEsc=0) const
 
StringuriUnescapeTo (String &buf, bool setPartial=false, int *errptr=0) const
 
StringuriUnescapeStr (bool setPartial=false, int *errptr=0)
 
String uriUnescape (int *errptr=0, bool setPartial=true) const
 
- Public Member Functions inherited from GenObject
 GenObject ()
 
virtual ~GenObject ()
 
virtual bool alive () const
 
virtual void destruct ()
 
virtual const StringtraceId () const
 
NamedCountergetObjCounter () const
 
NamedCountersetObjCounter (NamedCounter *counter)
 

Static Public Member Functions

static const StringanyValue (const GenObject *gen)
 
static Stringescape (String &buf, const String &str, char quot='"', bool literal = true)
 
static unsigned int maxStepPredicates ()
 
static const TokenDictdictErrors ()
 
- Static Public Member Functions inherited from String
static const Stringempty ()
 
static const char * boolText (bool value)
 
static int lenUtf8 (const char *value, uint32_t maxChar=0x10ffff, bool overlong=false)
 
static bool checkBOM (const char *str)
 
static bool stripBOM (const char *&str)
 
static bool stripBOM (char *&str)
 
static unsigned int hash (const char *value, unsigned int h=0)
 
static String msgEscape (const char *str, char extraEsc=0)
 
static String msgUnescape (const char *str, int *errptr=0, char extraEsc=0)
 
static String sqlEscape (const char *str, char extraEsc=0)
 
static StringuriEscapeTo (String &buf, const char *str, char extraEsc=0, const char *noEsc=0)
 
static StringuriEscapeTo (String &buf, const char *str, const char *extraEsc, const char *noEsc=0)
 
static String uriEscape (const char *str, char extraEsc=0, const char *noEsc=0)
 
static String uriEscape (const char *str, const char *extraEsc, const char *noEsc=0)
 
static StringuriUnescapeTo (String &buf, const char *str, bool setPartial=false, int *errptr=0)
 
static String uriUnescape (const char *str, int *errptr=0, bool setPartial=true)
 
static const Stringatom (const String *&str, const char *val)
 
static unsigned int c_starts_with (const char *str, const char *what, int lenStr=-1, int lenWhat=-1, bool caseInsensitive=false)
 
static unsigned int c_ends_with (const char *str, const char *what, int lenStr=-1, int lenWhat=-1, bool caseInsensitive=false)
 
static unsigned int c_skip (const char *&str, const char *what, int lenStr=-1, int lenWhat=-1, bool caseInsensitive=false)
 
static unsigned int c_skip_chars (const char *&str, const char *what, int len=-1, bool skipFound=true)
 
static char * c_replace_chars (const char *str, const char *what, const char *repl=0, bool inPlace=false, int wLen=-1, int rLen=-1, bool *chg=0)
 
- Static Public Member Functions inherited from GenObject
static void * getObject (const String &name, const GenObject *obj)
 
static bool getObjCounting ()
 
static void setObjCounting (bool enable)
 
static NamedCountergetObjCounter (const String &name, bool create=true)
 
static ObjListgetObjCounters ()
 

Protected Member Functions

virtual void changed ()
 
void parsePath ()
 
void reset ()
 

Detailed Description

XML Path holder.

This class holds an XML Path

Member Enumeration Documentation

◆ Find

enum Find

Find result type

◆ Flags

enum Flags

Path flags

◆ Status

enum Status

Error (status) codes

Constructor & Destructor Documentation

◆ XPath() [1/2]

XPath ( const char * value = 0,
unsigned int flags = 0 )

Constructor

Parameters
valueInitial value
flagsPath flags

◆ XPath() [2/2]

XPath ( const XPath & other)

Copy constructor

Parameters
otherObject to copy

◆ ~XPath()

virtual ~XPath ( )
virtual

Destructor

Member Function Documentation

◆ absolute()

bool absolute ( ) const
inline

Check if the parth is absolute

Returns
True if the path is absolute, false otherwise

Referenced by XPath::find().

◆ anyValue()

static const String * anyValue ( const GenObject * gen)
inlinestatic

Resolve a result returned when searching for 'any' value

Parameters
genResult to handle
Returns
String pointer (XML text, attribute value or string), NULL if given parameter is NULL

References XmlElement::getText(), and GenObject::toString().

◆ changed()

virtual void changed ( )
protectedvirtual

Called whenever the String value changed. Reset data, parse the path

Reimplemented from String.

◆ describeError()

String & describeError ( String & buf) const
inline

Describe the error

Parameters
bufDestination buffer
Returns
Destination buffer reference

References String::c_str(), XPath::dictErrors(), XPath::error(), and XPath::status().

◆ dictErrors()

static const TokenDict * dictErrors ( )
static

Retrieve the dictionary containing the error strings

Returns
Valid dictionary pointer

Referenced by XPath::describeError().

◆ dump() [1/2]

void dump ( ObjList & lst,
bool escape = true ) const

Dump path items string to ObjList

Parameters
lstDestination list
escapeEscape strings

◆ dump() [2/2]

String & dump ( String & buf,
bool escape = true,
const char * itemSep = "\r\n",
bool sepFirst = true ) const

Dump path items to string Build a canonical (spaces stripped ...) string: dump(buf,true,"/",absolute())

Parameters
bufDestination buffer
escapeEscape strings
itemSepItem separator
sepFirstAdd item separator before first item
Returns
Given buffer reference

◆ error()

const String & error ( ) const
inline

Retrieve the additional path parse error string

Returns
Parse error string (may be empty)

Referenced by XPath::describeError().

◆ errorItem()

unsigned int errorItem ( ) const
inline

Retrieve the failed to parse item index (0 based)

Returns
0 based failed to parse item index

◆ escape()

static String & escape ( String & buf,
const String & str,
char quot = '"',
bool literal = true )
static

Escape a string and add quoted value to buffer

Parameters
bufDestination buffer
strString to escape
quotCharacter to use for quoting. Use " if not " or '
literalEscape as literal (used in comparison operators) or XML string (used in function parameters)
Returns
Destination buffer reference

◆ find()

const GenObject * find ( const XmlElement & xml,
unsigned int what,
ObjList * list = 0 ) const
inline

Find in xml using this path

Parameters
xmlXML element to search in
whatFlags indicating data to match
listOptional pointer to list to be filled with multiple elements matching the path Set it to NULL if single element is requested Filled objects may be XmlElement, String (XmlText contents) or NamedString (attribute) Objects set in it have autodelete disabled
Returns
First found item, NULL if not found

References XPath::absolute(), XPath::find(), and XPath::status().

Referenced by XPath::find(), XPath::findText(), and XPath::findXml().

◆ findText()

const String * findText ( const XmlElement & xml,
ObjList * list = 0 ) const
inline

Find XML text(s)

Parameters
xmlXML element to search in
listOptional pointer to list to be filled with multiple texts matching the path Set it to NULL if single text is requested Objects set in it have autodelete disabled
Returns
First found item, NULL if not found.

References XPath::find().

◆ findXml()

XmlElement * findXml ( const XmlElement & xml,
ObjList * list = 0 ) const
inline

Find XML element(s)

Parameters
xmlXML element to search in
listOptional pointer to list to be filled with multiple elements matching the path Set it to NULL if single element is requested Objects set in it have autodelete disabled
Returns
First found item, NULL if not found.

References XPath::find().

◆ maxStepPredicates()

static unsigned int maxStepPredicates ( )
static

Retrieve the number of maximum allowed predicates in a path step

Returns
Maximum allowed predicates in a path step

◆ operator=()

XPath & operator= ( const XPath & other)
inline

Assignment operator

Parameters
otherObject to copy

◆ parse()

unsigned int parse ( )
inline

Parse the path if not already done

Returns
0 on success, failed code otherwise

References XPath::parsePath(), and XPath::status().

◆ parsePath()

void parsePath ( )
protected

Parse the path

Referenced by XPath::parse().

◆ reset()

void reset ( )
protected

Reset data

◆ status()

unsigned int status ( ) const
inline

Retrieve the path parse error

Returns
0 on success, failed code otherwise

Referenced by XPath::describeError(), XPath::find(), and XPath::parse().


The documentation for this class was generated from the following file: