Main Class representing a XML node.
All operations are performed using this class.
Definition at line 275 of file xmlParser.h.
#include <utils/xmlparser/xmlParser.h>
Classes | |
struct | XMLNodeDataTag |
Public Types | |
enum | XMLCharEncoding { char_encoding_error =0, char_encoding_UTF8 =1, char_encoding_legacy =2, char_encoding_ShiftJIS =3, char_encoding_GB2312 =4, char_encoding_Big5 =5, char_encoding_GBK =6 } |
Enumeration for XML character encoding. More... | |
typedef enum XMLNode::XMLCharEncoding | XMLCharEncoding |
Enumeration for XML character encoding. More... | |
Public Member Functions | |
XMLSTR | createXMLString (int nFormat=1, int *pnSize=NULL) const |
Create an XML string starting from the current XMLNode. More... | |
XMLError | writeToFile (XMLCSTR filename, const char *encoding=NULL, char nFormat=1) const |
Save the content of an xmlNode inside a file. More... | |
XMLCSTR | getName () const |
name of the node More... | |
XMLCSTR | getText (int i=0) const |
return ith text field More... | |
int | nText () const |
nbr of text field More... | |
XMLNode | getParentNode () const |
return the parent node More... | |
XMLNode | getChildNode (int i=0) const |
return ith child node More... | |
XMLNode | getChildNode (XMLCSTR name, int i) const |
return ith child node with specific name (return an empty node if failing). If i==-1, this returns the last XMLNode with the given name. More... | |
XMLNode | getChildNode (XMLCSTR name, int *i=NULL) const |
return next child node with specific name (return an empty node if failing) More... | |
XMLNode | getChildNodeWithAttribute (XMLCSTR tagName, XMLCSTR attributeName, XMLCSTR attributeValue=NULL, int *i=NULL) const |
return child node with specific name/attribute (return an empty node if failing) More... | |
XMLNode | getChildNodeByPath (XMLSTR path, char createNodeIfMissing=0, XMLCHAR sep='/') |
return the first child node with specific path. WARNING: the value of the parameter "path" is destroyed! More... | |
XMLNode | getChildNodeByPath (XMLCSTR path, char createNodeIfMissing=0, XMLCHAR sep='/') |
return the first child node with specific path More... | |
int | nChildNode (XMLCSTR name) const |
return the number of child node with specific name More... | |
int | nChildNode () const |
nbr of child node More... | |
XMLAttribute | getAttribute (int i=0) const |
return ith attribute More... | |
XMLCSTR | getAttributeName (int i=0) const |
return ith attribute name More... | |
XMLCSTR | getAttributeValue (int i=0) const |
return ith attribute value More... | |
char | isAttributeSet (XMLCSTR name) const |
test if an attribute with a specific name is given More... | |
XMLCSTR | getAttribute (XMLCSTR name, int i) const |
return ith attribute content with specific name (return a NULL if failing) More... | |
XMLCSTR | getAttribute (XMLCSTR name, int *i=NULL) const |
return next attribute content with specific name (return a NULL if failing) More... | |
int | nAttribute () const |
nbr of attribute More... | |
XMLClear | getClear (int i=0) const |
return ith clear field (comments) More... | |
int | nClear () const |
nbr of clear field More... | |
XMLNodeContents | enumContents (XMLElementPosition i) const |
enumerate all the different contents (attribute,child,text, clear) of the current XMLNode. The order is reflecting the order of the original file/string. NOTE: 0 <= i < nElement(); More... | |
int | nElement () const |
nbr of different contents for current node More... | |
char | isEmpty () const |
is this node Empty? More... | |
char | isDeclaration () const |
is this node a declaration <? .... ?> More... | |
XMLNode | deepCopy () const |
deep copy (duplicate/clone) a XMLNode More... | |
~XMLNode () | |
XMLNode (const XMLNode &A) | |
to allow shallow/fast copy: More... | |
XMLNode & | operator= (const XMLNode &A) |
to allow shallow/fast copy: More... | |
XMLNode () | |
XMLNode | addChild (XMLCSTR lpszName, char isDeclaration=FALSE, XMLElementPosition pos=-1) |
Add a new child node. More... | |
XMLNode | addChild (XMLNode nodeToAdd, XMLElementPosition pos=-1) |
If the "nodeToAdd" has some parents, it will be detached from it's parents before being attached to the current XMLNode. More... | |
XMLAttribute * | addAttribute (XMLCSTR lpszName, XMLCSTR lpszValuev) |
Add a new attribute. More... | |
XMLCSTR | addText (XMLCSTR lpszValue, XMLElementPosition pos=-1) |
Add a new text content. More... | |
XMLClear * | addClear (XMLCSTR lpszValue, XMLCSTR lpszOpen=NULL, XMLCSTR lpszClose=NULL, XMLElementPosition pos=-1) |
Add a new clear tag. More... | |
XMLCSTR | updateName (XMLCSTR lpszName) |
change node's name More... | |
XMLAttribute * | updateAttribute (XMLAttribute *newAttribute, XMLAttribute *oldAttribute) |
if the attribute to update is missing, a new one will be added More... | |
XMLAttribute * | updateAttribute (XMLCSTR lpszNewValue, XMLCSTR lpszNewName=NULL, int i=0) |
if the attribute to update is missing, a new one will be added More... | |
XMLAttribute * | updateAttribute (XMLCSTR lpszNewValue, XMLCSTR lpszNewName, XMLCSTR lpszOldName) |
set lpszNewName=NULL if you don't want to change the name of the attribute if the attribute to update is missing, a new one will be added More... | |
XMLCSTR | updateText (XMLCSTR lpszNewValue, int i=0) |
if the text to update is missing, a new one will be added More... | |
XMLCSTR | updateText (XMLCSTR lpszNewValue, XMLCSTR lpszOldValue) |
if the text to update is missing, a new one will be added More... | |
XMLClear * | updateClear (XMLCSTR lpszNewContent, int i=0) |
if the clearTag to update is missing, a new one will be added More... | |
XMLClear * | updateClear (XMLClear *newP, XMLClear *oldP) |
if the clearTag to update is missing, a new one will be added More... | |
XMLClear * | updateClear (XMLCSTR lpszNewValue, XMLCSTR lpszOldValue) |
if the clearTag to update is missing, a new one will be added More... | |
void | deleteNodeContent () |
The "deleteNodeContent" function forces the deletion of the content of this XMLNode and the subtree. More... | |
void | deleteAttribute (int i=0) |
Delete the ith attribute of the current XMLNode. More... | |
void | deleteAttribute (XMLCSTR lpszName) |
Delete the attribute with the given name (the "strcmp" function is used to find the right attribute) More... | |
void | deleteAttribute (XMLAttribute *anAttribute) |
Delete the attribute with the name "anAttribute->lpszName" (the "strcmp" function is used to find the right attribute) More... | |
void | deleteText (int i=0) |
Delete the Ith text content of the current XMLNode. More... | |
void | deleteText (XMLCSTR lpszValue) |
Delete the text content "lpszValue" inside the current XMLNode (direct "pointer-to-pointer" comparison is used to find the right text) More... | |
void | deleteClear (int i=0) |
Delete the Ith clear tag inside the current XMLNode. More... | |
void | deleteClear (XMLCSTR lpszValue) |
Delete the clear tag "lpszValue" inside the current XMLNode (direct "pointer-to-pointer" comparison is used to find the clear tag) More... | |
void | deleteClear (XMLClear *p) |
Delete the clear tag "p" inside the current XMLNode (direct "pointer-to-pointer" comparison on the lpszName of the clear tag is used to find the clear tag) More... | |
XMLNode | addChild_WOSD (XMLSTR lpszName, char isDeclaration=FALSE, XMLElementPosition pos=-1) |
Add a new child node. More... | |
XMLAttribute * | addAttribute_WOSD (XMLSTR lpszName, XMLSTR lpszValue) |
Add a new attribute. More... | |
XMLCSTR | addText_WOSD (XMLSTR lpszValue, XMLElementPosition pos=-1) |
Add a new text content. More... | |
XMLClear * | addClear_WOSD (XMLSTR lpszValue, XMLCSTR lpszOpen=NULL, XMLCSTR lpszClose=NULL, XMLElementPosition pos=-1) |
Add a new clear Tag. More... | |
XMLCSTR | updateName_WOSD (XMLSTR lpszName) |
change node's name More... | |
XMLAttribute * | updateAttribute_WOSD (XMLAttribute *newAttribute, XMLAttribute *oldAttribute) |
if the attribute to update is missing, a new one will be added More... | |
XMLAttribute * | updateAttribute_WOSD (XMLSTR lpszNewValue, XMLSTR lpszNewName=NULL, int i=0) |
if the attribute to update is missing, a new one will be added More... | |
XMLAttribute * | updateAttribute_WOSD (XMLSTR lpszNewValue, XMLSTR lpszNewName, XMLCSTR lpszOldName) |
set lpszNewName=NULL if you don't want to change the name of the attribute if the attribute to update is missing, a new one will be added More... | |
XMLCSTR | updateText_WOSD (XMLSTR lpszNewValue, int i=0) |
if the text to update is missing, a new one will be added More... | |
XMLCSTR | updateText_WOSD (XMLSTR lpszNewValue, XMLCSTR lpszOldValue) |
if the text to update is missing, a new one will be added More... | |
XMLClear * | updateClear_WOSD (XMLSTR lpszNewContent, int i=0) |
if the clearTag to update is missing, a new one will be added More... | |
XMLClear * | updateClear_WOSD (XMLClear *newP, XMLClear *oldP) |
if the clearTag to update is missing, a new one will be added More... | |
XMLClear * | updateClear_WOSD (XMLSTR lpszNewValue, XMLCSTR lpszOldValue) |
if the clearTag to update is missing, a new one will be added More... | |
XMLElementPosition | positionOfText (int i=0) const |
XMLElementPosition | positionOfText (XMLCSTR lpszValue) const |
XMLElementPosition | positionOfClear (int i=0) const |
XMLElementPosition | positionOfClear (XMLCSTR lpszValue) const |
XMLElementPosition | positionOfClear (XMLClear *a) const |
XMLElementPosition | positionOfChildNode (int i=0) const |
XMLElementPosition | positionOfChildNode (XMLNode x) const |
XMLElementPosition | positionOfChildNode (XMLCSTR name, int i=0) const |
return the position of the ith childNode with the specified name if (name==NULL) return the position of the ith childNode More... | |
Static Public Member Functions | |
static XMLCSTR | getVersion () |
Return the XMLParser library version number. More... | |
static XMLNode | parseString (XMLCSTR lpXMLString, XMLCSTR tag=NULL, XMLResults *pResults=NULL) |
Parse an XML string and return the root of a XMLNode tree representing the string. More... | |
static XMLNode | parseFile (XMLCSTR filename, XMLCSTR tag=NULL, XMLResults *pResults=NULL) |
Parse an XML file and return the root of a XMLNode tree representing the file. More... | |
static XMLNode | openFileHelper (XMLCSTR filename, XMLCSTR tag=NULL) |
Parse an XML file and return the root of a XMLNode tree representing the file. A very crude error checking is made. An attempt to guess the Char Encoding used in the file is made. More... | |
static XMLCSTR | getError (XMLError error) |
this gives you a user-friendly explanation of the parsing error More... | |
static XMLNode | emptyNode () |
return XMLNode::emptyXMLNode; More... | |
static XMLNode | createXMLTopNode (XMLCSTR lpszName, char isDeclaration=FALSE) |
Create the top node of an XMLNode structure. More... | |
static XMLNode | createXMLTopNode_WOSD (XMLSTR lpszName, char isDeclaration=FALSE) |
Create the top node of an XMLNode structure. More... | |
static char | setGlobalOptions (XMLCharEncoding characterEncoding=XMLNode::char_encoding_UTF8, char guessWideCharChars=1, char dropWhiteSpace=1, char removeCommentsInMiddleOfText=1) |
Sets the global options for the conversions. More... | |
static XMLCharEncoding | guessCharEncoding (void *buffer, int bufLen, char useXMLEncodingAttribute=1) |
Guess the character encoding of the string (ascii, utf8 or shift-JIS) More... | |
Static Public Attributes | |
static XMLNode | emptyXMLNode |
static XMLClear | emptyXMLClear ={ NULL, NULL, NULL} |
static XMLAttribute | emptyXMLAttribute ={ NULL, NULL} |
Private Types | |
typedef struct XMLNode::XMLNodeDataTag | XMLNodeData |
Private Member Functions | |
XMLNode (struct XMLNodeDataTag *pParent, XMLSTR lpszName, char isDeclaration) | |
Constructors are protected, so use instead one of: XMLNode::parseString, XMLNode::parseFile, XMLNode::openFileHelper, XMLNode::createXMLTopNode. More... | |
XMLNode (struct XMLNodeDataTag *p) | |
Constructors are protected, so use instead one of: XMLNode::parseString, XMLNode::parseFile, XMLNode::openFileHelper, XMLNode::createXMLTopNode. More... | |
char | parseClearTag (void *px, void *pa) |
char | maybeAddTxT (void *pa, XMLCSTR tokenPStr) |
int | ParseXMLElement (void *pXML) |
void * | addToOrder (int memInc, int *_pos, int nc, void *p, int size, XMLElementType xtype) |
int | indexText (XMLCSTR lpszValue) const |
int | indexClear (XMLCSTR lpszValue) const |
XMLNode | addChild_priv (int, XMLSTR, char, int) |
XMLAttribute * | addAttribute_priv (int, XMLSTR, XMLSTR) |
XMLCSTR | addText_priv (int, XMLSTR, int) |
XMLClear * | addClear_priv (int, XMLSTR, XMLCSTR, XMLCSTR, int) |
void | emptyTheNode (char force) |
Static Private Member Functions | |
static XMLElementPosition | findPosition (XMLNodeData *d, int index, XMLElementType xtype) |
static int | CreateXMLStringR (XMLNodeData *pEntry, XMLSTR lpszMarker, int nFormat) |
static int | removeOrderElement (XMLNodeData *d, XMLElementType t, int index) |
static void | exactMemory (XMLNodeData *d) |
static int | detachFromParent (XMLNodeData *d) |
Private Attributes | |
XMLNodeData * | d |
typedef enum XMLNode::XMLCharEncoding XMLNode::XMLCharEncoding |
Enumeration for XML character encoding.
|
private |
enum XMLNode::XMLCharEncoding |
Enumeration for XML character encoding.
Enumerator | |
---|---|
char_encoding_error | |
char_encoding_UTF8 | |
char_encoding_legacy | |
char_encoding_ShiftJIS | |
char_encoding_GB2312 | |
char_encoding_Big5 | |
char_encoding_GBK |
Definition at line 527 of file xmlParser.h.
|
private |
Constructors are protected, so use instead one of: XMLNode::parseString, XMLNode::parseFile, XMLNode::openFileHelper, XMLNode::createXMLTopNode.
|
private |
Constructors are protected, so use instead one of: XMLNode::parseString, XMLNode::parseFile, XMLNode::openFileHelper, XMLNode::createXMLTopNode.
Definition at line 976 of file xmlParser.cpp.
References d.
XMLNode::~XMLNode | ( | ) |
Definition at line 2048 of file xmlParser.cpp.
References d, and emptyTheNode().
XMLNode::XMLNode | ( | const XMLNode & | A | ) |
|
inline |
Definition at line 400 of file xmlParser.h.
Referenced by addChild_priv(), createXMLTopNode(), createXMLTopNode_WOSD(), and getParentNode().
|
private |
Definition at line 1077 of file xmlParser.cpp.
References d, emptyXMLAttribute, XMLAttribute::lpszName, XMLAttribute::lpszValue, myFree(), and myRealloc().
Referenced by addAttribute(), addAttribute_WOSD(), and ParseXMLElement().
|
private |
Definition at line 1066 of file xmlParser.cpp.
References addToOrder(), d, emptyXMLNode, eNodeChild, isDeclaration(), and XMLNode().
Referenced by addChild(), addChild_WOSD(), and ParseXMLElement().
|
private |
Definition at line 1102 of file xmlParser.cpp.
References addToOrder(), d, emptyXMLClear, eNodeClear, ALLXMLClearTag::lpszClose, XMLClear::lpszCloseTag, ALLXMLClearTag::lpszOpen, XMLClear::lpszOpenTag, XMLClear::lpszValue, myFree(), and XMLClearTags.
Referenced by addClear(), addClear_WOSD(), and parseClearTag().
Definition at line 1091 of file xmlParser.cpp.
References addToOrder(), d, eNodeText, myFree(), XMLCSTR, and XMLSTR.
Referenced by addText(), addText_WOSD(), and maybeAddTxT().
|
private |
Definition at line 1039 of file xmlParser.cpp.
References d, and myRealloc().
Referenced by addChild(), addChild_priv(), addClear_priv(), and addText_priv().
|
staticprivate |
Definition at line 1766 of file xmlParser.cpp.
References _CXML, charmemset(), eNodeChild, eNodeClear, eNodeText, INDENTCHAR, ToXMLStringTool::lengthXMLString(), LENSTR, XMLClear::lpszCloseTag, XMLAttribute::lpszName, XMLClear::lpszOpenTag, XMLClear::lpszValue, XMLAttribute::lpszValue, ToXMLStringTool::toXMLUnSafe(), XMLCSTR, and xstrcpy().
Referenced by createXMLString().
|
staticprivate |
Definition at line 2037 of file xmlParser.cpp.
References d, eNodeChild, and removeOrderElement().
Referenced by addChild(), deleteNodeContent(), and emptyTheNode().
|
private |
Definition at line 2060 of file xmlParser.cpp.
References d, detachFromParent(), emptyTheNode(), and myFree().
Referenced by deleteNodeContent(), emptyTheNode(), operator=(), and ~XMLNode().
|
staticprivate |
Definition at line 1162 of file xmlParser.cpp.
References d, XMLCSTR, and XMLSTR.
Referenced by ParseXMLElement().
|
inlinestaticprivate |
Definition at line 1018 of file xmlParser.cpp.
References d.
Referenced by positionOfChildNode(), positionOfClear(), positionOfText(), and removeOrderElement().
|
static |
Return the XMLParser library version number.
Definition at line 27 of file xmlParser.cpp.
References _CXML.
|
private |
Definition at line 2293 of file xmlParser.cpp.
References d.
Referenced by deleteClear(), positionOfClear(), and updateClear_WOSD().
|
private |
Definition at line 2244 of file xmlParser.cpp.
Referenced by deleteText(), positionOfText(), and updateText_WOSD().
Definition at line 1171 of file xmlParser.cpp.
References addText_priv(), d, deleteClear(), dropWhiteSpace, eNodeClear, eNodeText, fromXMLString(), ALLXMLClearTag::lpszOpen, XML::lpszText, mrpt::system::os::memcpy(), MEMORYINCREASE, removeCommentsInMiddleOfText, XML_isSPACECHAR, XMLCHAR, XMLClearTags, XMLCSTR, XMLSTR, and xstrlen().
Referenced by ParseXMLElement().
to allow shallow/fast copy:
Definition at line 2099 of file xmlParser.cpp.
References d, and emptyTheNode().
Definition at line 1119 of file xmlParser.cpp.
References _CXML, addClear_priv(), XML::error, eXMLErrorUnmatchedEndClearTag, ALLXMLClearTag::lpszClose, ALLXMLClearTag::lpszOpen, XML::lpXML, MEMORYINCREASE, XML::nIndex, stringDup(), XML_ByteTable, XMLClearTags, XMLCSTR, xstrlen(), and xstrstr().
Referenced by ParseXMLElement().
|
private |
Definition at line 1211 of file xmlParser.cpp.
References _CXML, addAttribute_priv(), addChild_priv(), XML::cbEndTag, XML::cbNewElement, d, eAttribEquals, eAttribName, eAttribValue, eInsideTag, emptyXMLNode, eOutsideTag, XML::error, eTokenClear, eTokenCloseTag, eTokenDeclaration, eTokenEquals, eTokenError, eTokenQuotedText, eTokenShortHandClose, eTokenTagEnd, eTokenTagStart, eTokenText, exactMemory(), eXMLErrorMissingEndTag, eXMLErrorMissingEndTagName, eXMLErrorMissingTagName, eXMLErrorUnexpectedToken, eXMLErrorUnmatchedEndTag, FALSE, fromXMLString(), GetNextToken(), isEmpty(), XML::lpEndTag, XML::lpNewElement, XML::lpszText, XML::lpXML, maybeAddTxT(), MEMORYINCREASE, myTagCompare(), XML::nFirst, XML::nIndex, XML::nIndexMissigEndTag, parseClearTag(), ParseXMLElement(), NextToken::pClr, NextToken::pStr, status, stringDup(), TRUE, XMLCSTR, and XMLSTR.
Referenced by parseString(), and ParseXMLElement().
|
staticprivate |
Definition at line 1026 of file xmlParser.cpp.
References d, and findPosition().
Referenced by deleteClear(), deleteText(), and detachFromParent().
|
private |
Definition at line 627 of file xmlParser.h.
Referenced by addAttribute_priv(), addChild(), addChild_priv(), addClear_priv(), addText_priv(), addToOrder(), createXMLString(), deepCopy(), deleteAttribute(), deleteClear(), deleteNodeContent(), deleteText(), detachFromParent(), emptyTheNode(), enumContents(), exactMemory(), findPosition(), getAttribute(), getAttributeName(), getAttributeValue(), getChildNode(), getClear(), getName(), getParentNode(), getText(), indexClear(), indexText(), isAttributeSet(), isDeclaration(), isEmpty(), maybeAddTxT(), nAttribute(), nChildNode(), nClear(), nElement(), nText(), operator=(), ParseXMLElement(), positionOfChildNode(), positionOfClear(), positionOfText(), removeOrderElement(), updateAttribute_WOSD(), updateClear_WOSD(), updateName_WOSD(), updateText_WOSD(), writeToFile(), XMLNode(), and ~XMLNode().
|
static |
Definition at line 403 of file xmlParser.h.
Referenced by addAttribute_priv(), and getAttribute().
|
static |
Definition at line 402 of file xmlParser.h.
Referenced by addClear_priv(), and getClear().
|
static |
Definition at line 400 of file xmlParser.h.
Referenced by addChild_priv(), deepCopy(), emptyNode(), getChildNode(), getChildNodeByPath(), getChildNodeWithAttribute(), getParentNode(), parseFile(), parseString(), and ParseXMLElement().
Page generated by Doxygen 1.8.14 for MRPT 1.5.7 Git: 5902e14cc Wed Apr 24 15:04:01 2019 +0200 at lun oct 28 01:39:17 CET 2019 |