117 inline unsigned int row()
const
169 inline const char*
getError(
const char* defVal =
"Xml error")
170 {
return getError(m_error,defVal); }
176 {
return m_unparsed; }
202 static inline const char*
getError(
int code,
const char* defVal =
"Xml error")
203 {
return lookup(code,s_errorString,defVal); }
211 {
return (c <= 0x20) && ((c == 0x20) || (c == 0x09) || (c == 0x0d) || (c == 0x0a)); }
220 return (ch >=
'A' && ch <=
'Z') || (ch >=
'a' && ch <=
'z')
221 || (ch ==
':') || (ch ==
'_')
222 || (ch >= 0xc0 && ch <= 0xd6) || (ch >= 0xd8 && ch <= 0xf6) || (ch >= 0xf8);
238 return checkFirstNameCharacter(ch) || ch ==
'-' || ch ==
'.' || (ch >=
'0' && ch <=
'9')
267 {
return unEscape(text,text.
c_str(),text.
length(),error,
false,found); }
285 bool inText =
false,
bool* found = 0);
387 {
return c ==
'<' || c ==
'>'; }
393 { m_error = NoError; }
399 { m_parsed.clear(); m_parsed.clearParams(); }
595 XmlSaxParser::Error err = addChild(child);
596 if (err != XmlSaxParser::NoError) {
597 TelEngine::destruct(child);
639 {
return getChildren().skipNull() != 0; }
655 XmlDomParser(
const char* name =
"XmlDomParser",
bool fragment =
false);
694 {
return el == m_current; }
752 {
return m_current == 0; }
869 {
return m_declaration; }
945 {
return static_cast<XmlChild*
>(m_list.remove(
false)); }
1007 bool noPrefix =
true)
1008 {
return getElement(list,name,ns,noPrefix); }
1021 bool noPrefix =
true);
1029 {
return getText(lst); }
1038 for (; lst && !x; lst = lst->
skipNext())
1045 bool noPrefix =
true);
1098 {
return before ? m_beforeRoot : m_afterRoot; }
1132 {
return m_beforeRoot.removeChild(child,delObj); }
1156 bool completeOnly =
true)
const;
1165 XmlSaxParser::Error
loadFile(
const char* file,
int* error = 0);
1179 const char* eoln =
"\r\n")
const;
1235 XmlElement(
const char* name,
const char* value,
bool complete =
true);
1252 inline const char*
tag()
const
1253 {
return m_element; }
1260 {
return m_prefixed == 0; }
1267 {
return m_prefixed ? m_prefixed->name() :
static_cast<const String&
>(m_element); }
1280 {
return m_prefixed ? m_prefixed->name() :
static_cast<const String&
>(m_element); }
1322 { m_complete =
true; }
1328 {
return m_complete; }
1341 {
return m_parent ? m_parent->
element() : 0; }
1347 {
return m_parent; }
1359 {
return m_element; }
1365 {
return m_element; }
1372 {
return m_children.getChildren(); }
1378 {
return m_children.clearChildren(); }
1385 {
return m_inheritedNs; }
1408 m_children.removeChild(x,
false);
1417 {
return m_element; }
1432 const String* auth = 0)
const;
1444 bool noPrefix =
true)
const
1445 {
return XmlFragment::findElement(getChildren().skipNull(),name,ns,noPrefix); }
1457 bool noPrefix =
true)
const
1458 {
return XmlFragment::findElement(getChildren().skipNull(),&name,ns,noPrefix); }
1471 const String* ns = 0,
bool noPrefix =
true)
const {
1473 return findFirstChild(name,ns,noPrefix);
1475 return start ? XmlFragment::findElement(start->
skipNext(),name,ns,noPrefix) : 0;
1489 const String* ns = 0,
bool noPrefix =
true)
const
1490 {
return findNextChild(prev,&name,ns,noPrefix); }
1502 bool noPrefix =
true)
const {
1503 XmlElement* c = findFirstChild(&name,ns,noPrefix);
1504 return c ? &(c->
getText()) : 0;
1545 {
return m_element; }
1563 bool skipPrefix =
true) {
1565 m_element.copySubParams(list,prefix,skipPrefix);
1567 m_element.copyParams(list);
1576 { m_element.setParam(name,value); }
1584 if (!TelEngine::null(value))
1585 m_element.setParam(name,value);
1587 removeAttribute(name);
1596 {
return m_element.getValue(name); }
1604 {
return m_element.getParam(name); }
1613 String* a = getAttribute(name);
1614 return a && *a == value;
1622 { m_element.clearParam(name); }
1630 return xmlnsAttribute(s_ns);
1631 return xmlnsAttribute(s_nsPrefix + *m_prefixed);
1646 const String* x = xmlns();
1647 return x && *x == ns;
1675 return TelEngine::null(name) ? 0
1700 {
return str == s_ns || str.
startsWith(s_nsPrefix); }
1719 bool copyXml =
false);
1731 bool copyXml =
false);
1744 bool copyXml =
false);
1758 inline void setPrefixed() {
1759 TelEngine::destruct(m_prefixed);
1760 int pos = m_element.find(
":");
1762 m_prefixed =
new NamedString(m_element.substr(pos + 1),m_element.substr(0,pos));
1804 {
return m_comment; }
1925 inline void setText(
const void* buf,
unsigned int len)
1926 { m_text.hexify(buf,len); }
1990 {
return m_doctype; }
2012class XPathParseData;
2013class XPathPredicate;
2015class XPathNodeCheck;
2030 StrictParse = 0x0002,
2033 IgnoreEmptyResult = 0x0004,
2034 NoXmlNameCheck = 0x0008,
2048 FindAny = FindXml | FindText | FindAttr
2072 XPath(
const char* value = 0,
unsigned int flags = 0);
2090 {
return 0 != (m_flags & FAbsolute); }
2097 {
return m_status; }
2104 {
return m_errorItem; }
2121 buf <<
"item=" << m_errorItem <<
" status=" << m_status;
2122 const char* tmp = error() ? error().
c_str() : lookup(m_status,dictErrors());
2124 buf <<
" (" << tmp <<
")";
2133 if (NotParsed == status())
2149 if (status() || 0 == (FindAny & what))
2152 unsigned int total = 0;
2153 find(total,xml,res,list,what,0,0,absolute());
2166 {
return (
XmlElement*)find(xml,FindXml,list); }
2177 {
return (
const String*)find(xml,FindText,list); }
2189 bool sepFirst =
true)
const;
2203 {
return copy(other); }
2262 unsigned int what,
ObjList* crtItem = 0,
unsigned int step = 0,
bool absolute =
false)
const;
2264 XPathNodeCheck& data)
const;
2265 bool parseStepPredicate(XPathParseData& data, XPathPredicate* pred);
2266 bool checkStepPredicate(XPathParseData& data, XPathStep* step, XPathPredicate* pred);
2267 bool setStatus(
unsigned int code,
unsigned int itemIdx = 0,
const char* error = 0,
2268 XPathParseData* data = 0);
2269 XPath& copy(
const XPath& other,
bool constr =
false);
2271 unsigned int m_flags;
2273 unsigned int m_status;
2274 unsigned int m_errorItem;
A holder for a debug level.
Definition yateclass.h:329
Definition yateclass.h:1627
virtual const String & toString() const
A named string container class.
Definition yateclass.h:7690
void clearParams()
Definition yateclass.h:7757
NamedString * getParam(const String &name) const
NamedList & setParam(NamedString *param)
const char * getValue(const String &name, const char *defvalue=0) const
NamedList & clearParam(const String &name, char childSep=0, const String *value=0)
NamedList & copySubParams(const NamedList &original, const String &prefix, bool skipPrefix=true, bool replace=false)
NamedList & copyParams(bool replace, const NamedList &original, bool copyUserData=false)
A named string class.
Definition yateclass.h:5304
const String & name() const
Definition yateclass.h:5319
An object list class.
Definition yateclass.h:2032
ObjList * find(const GenObject *obj) const
ObjList * skipNull() const
ObjList * skipNext() const
GenObject * get() const
Definition yateclass.h:2068
static const ObjList & empty()
GenObject * remove(bool delobj=true)
An abstract stream class capable of reading and writing.
Definition yateclass.h:11123
A C-style string handling class.
Definition yateclass.h:3055
const char * c_str() const
Definition yateclass.h:3160
int find(char what, unsigned int offs=0) const
String & hexify(const void *data, unsigned int len, char sep=0, bool upCase=false)
bool startsWith(const char *what, bool wordBreak=false, bool caseInsensitive=false) const
static const String & empty()
unsigned int length() const
Definition yateclass.h:3182
String substr(int offs, int len=-1) const
XML Path holder.
Definition yatexml.h:2022
XPath(const char *value=0, unsigned int flags=0)
bool absolute() const
Definition yatexml.h:2089
unsigned int parse()
Definition yatexml.h:2132
unsigned int errorItem() const
Definition yatexml.h:2103
XPath & operator=(const XPath &other)
Definition yatexml.h:2202
String & dump(String &buf, bool escape=true, const char *itemSep="\r\n", bool sepFirst=true) const
const GenObject * find(const XmlElement &xml, unsigned int what, ObjList *list=0) const
Definition yatexml.h:2148
const String * findText(const XmlElement &xml, ObjList *list=0) const
Definition yatexml.h:2176
XmlElement * findXml(const XmlElement &xml, ObjList *list=0) const
Definition yatexml.h:2165
String & describeError(String &buf) const
Definition yatexml.h:2118
static unsigned int maxStepPredicates()
void dump(ObjList &lst, bool escape=true) const
Status
Definition yatexml.h:2054
static const String * anyValue(const GenObject *gen)
Definition yatexml.h:2210
XPath(const XPath &other)
static String & escape(String &buf, const String &str, char quot='"', bool literal = true)
Flags
Definition yatexml.h:2028
static const TokenDict * dictErrors()
Find
Definition yatexml.h:2044
unsigned int status() const
Definition yatexml.h:2096
const String & error() const
Definition yatexml.h:2110
Xml Declaration.
Definition yatexml.h:1829
const String & getCData() const
Definition yatexml.h:1854
void toString(String &dump, const String &indent=String::empty()) const
virtual XmlCData * xmlCData()
Definition yatexml.h:1868
XmlCData(const XmlCData &orig)
XmlCData(const String &data)
Xml Child.
Definition yatexml.h:765
virtual XmlElement * xmlElement()
Definition yatexml.h:785
virtual void replaceParams(const NamedList ¶ms)
Definition yatexml.h:827
virtual XmlComment * xmlComment()
Definition yatexml.h:792
virtual void setParent(XmlParent *parent)
Definition yatexml.h:778
virtual XmlCData * xmlCData()
Definition yatexml.h:799
virtual XmlDeclaration * xmlDeclaration()
Definition yatexml.h:813
virtual XmlDoctype * xmlDoctype()
Definition yatexml.h:820
virtual XmlText * xmlText()
Definition yatexml.h:806
Xml Declaration.
Definition yatexml.h:837
XmlDeclaration(const NamedList &decl)
XmlDeclaration(const char *version="1.0", const char *enc="utf-8")
XmlDeclaration(const XmlDeclaration &orig)
const NamedList & getDec() const
Definition yatexml.h:868
void toString(String &dump, bool escape=true) const
virtual XmlDeclaration * xmlDeclaration()
Definition yatexml.h:876
Definition yatexml.h:1965
XmlDoctype(const XmlDoctype &orig)
void toString(String &dump, const String &indent=String::empty()) const
const String & getDoctype() const
Definition yatexml.h:1989
XmlDoctype(const String &doctype)
virtual XmlDoctype * xmlDoctype()
Definition yatexml.h:1996
Xml Document.
Definition yatexml.h:1054
virtual int write(Stream &out, bool escape=true, const String &indent=String::empty(), const String &origIndent=String::empty(), bool completeOnly=true) const
virtual XmlSaxParser::Error addChild(XmlChild *child)
XmlElement * root(bool completed=false) const
virtual XmlDocument * document()
Definition yatexml.h:1071
XmlDeclaration * declaration() const
XmlElement * takeRoot(bool completed=false)
Definition yatexml.h:1112
const XmlFragment & getFragment(bool before) const
Definition yatexml.h:1097
void replaceParams(const NamedList ¶ms)
virtual XmlChild * removeChild(XmlChild *child, bool delObj=true)
Definition yatexml.h:1131
void toString(String &dump, bool escape=true, const String &indent=String::empty(), const String &origIndent=String::empty()) const
XmlSaxParser::Error loadFile(const char *file, int *error=0)
virtual XmlSaxParser::Error read(Stream &in, int *error=0)
int saveFile(const char *file=0, bool escape=true, const String &indent=String::empty(), bool completeOnly=true, const char *eoln="\r\n") const
Document Object Model XML Parser.
Definition yatexml.h:647
virtual bool completed()
Definition yatexml.h:751
XmlDomParser(XmlParent *fragment, bool takeOwnership)
virtual void gotText(const String &text)
virtual void gotDeclaration(const NamedList &decl)
virtual void endElement(const String &name)
XmlDocument * document()
Definition yatexml.h:673
virtual void gotDoctype(const String &doc)
virtual void gotElement(const NamedList &element, bool empty)
virtual void gotProcessing(const NamedString &instr)
virtual void gotComment(const String &text)
XmlDomParser(const char *name="XmlDomParser", bool fragment=false)
virtual void gotCdata(const String &data)
bool isCurrent(const XmlElement *el) const
Definition yatexml.h:693
XmlFragment * fragment()
Definition yatexml.h:680
Xml Element.
Definition yatexml.h:1211
XmlElement * parent() const
Definition yatexml.h:1340
XmlText * setText(const char *text)
bool hasAttribute(const String &name, const String &value) const
Definition yatexml.h:1612
void clearChildren()
Definition yatexml.h:1377
virtual XmlSaxParser::Error addChild(XmlChild *child)
XmlElement * findNextChild(const XmlElement *prev=0, const String *name=0, const String *ns=0, bool noPrefix=true) const
Definition yatexml.h:1470
virtual XmlElement * xmlElement()
Definition yatexml.h:1294
void toString(String &dump, bool escape=true, const String &indent=String::empty(), const String &origIndent=String::empty(), bool completeOnly=true, const String *auth=0) const
const char * attribute(const String &name) const
Definition yatexml.h:1595
const char * tag() const
Definition yatexml.h:1252
String * getAttribute(const String &name) const
Definition yatexml.h:1603
XmlElement * addChildHex(const char *name, const void *buf, unsigned int len)
Definition yatexml.h:1686
bool setXmlns(const String &name=String::empty(), bool addAttr=false, const String &value=String::empty())
void setUnprefixedTag(const String &s)
XmlElement * findNextChild(const String &name, const XmlElement *prev=0, const String *ns=0, bool noPrefix=true) const
Definition yatexml.h:1488
virtual void replaceParams(const NamedList ¶ms)
String * xmlnsAttribute(const String &name) const
XmlElement * pop()
Definition yatexml.h:1404
XmlElement * findFirstChild(const String &name, const String *ns=0, bool noPrefix=true) const
Definition yatexml.h:1456
static bool isXmlns(const String &str)
Definition yatexml.h:1699
void setAttributeValid(const String &name, const char *value)
Definition yatexml.h:1583
String * xmlns() const
Definition yatexml.h:1628
bool empty() const
Definition yatexml.h:1333
XmlElement(const XmlElement &orig)
const NamedList & attributes() const
Definition yatexml.h:1544
static XmlElement * param2xml(NamedString *param, const String &tag, bool copyXml=false)
XmlElement(const NamedList &element, bool empty, XmlParent *parent=0)
static void xml2param(NamedList &list, XmlElement *parent, const String *tag, bool copyXml=false)
void setAttributes(const NamedList &list, const String &prefix=String::empty(), bool skipPrefix=true)
Definition yatexml.h:1562
static const String s_ns
Definition yatexml.h:1749
void setInheritedNs(const XmlElement *xml=0, bool inherit=true)
virtual void setParent(XmlParent *parent)
virtual const String & toString() const
Definition yatexml.h:1416
unsigned int copyAttributes(NamedList &list, const String &prefix) const
virtual void setCompleted()
Definition yatexml.h:1321
void addText(const char *text)
virtual XmlElement * element()
Definition yatexml.h:1301
bool getTag(const String *&tag, const String *&ns) const
bool hasXmlns(const String &ns) const
Definition yatexml.h:1645
virtual const String & getName() const
Definition yatexml.h:1358
XmlElement(const char *name, bool complete=true)
XmlChild * getFirstChild()
virtual XmlParent * getParent()
Definition yatexml.h:1346
virtual const NamedList & getElement() const
Definition yatexml.h:1364
bool completed() const
Definition yatexml.h:1327
const String & unprefixedTag() const
Definition yatexml.h:1266
XmlElement(const char *name, const char *value, bool complete=true)
const String & getText() const
virtual XmlChild * removeChild(XmlChild *child, bool delObj=true)
void addText(const void *buf, unsigned int len)
bool isDefaultNs() const
Definition yatexml.h:1259
XmlElement * addChild(const char *name, const char *value=0)
Definition yatexml.h:1674
const ObjList & getChildren() const
Definition yatexml.h:1371
const NamedList * inheritedNs() const
Definition yatexml.h:1384
void addInheritedNs(const NamedList &list)
XmlElement * findFirstChild(const String *name=0, const String *ns=0, bool noPrefix=true) const
Definition yatexml.h:1443
void removeAttribute(const String &name)
Definition yatexml.h:1621
void setAttribute(const String &name, const char *value)
Definition yatexml.h:1575
static NamedString * xml2param(XmlElement *xml, const String *tag, bool copyXml=false)
const String & getTag() const
Definition yatexml.h:1279
static const String s_nsPrefix
Definition yatexml.h:1754
const String * childText(const String &name, const String *ns=0, bool noPrefix=true) const
Definition yatexml.h:1501
Xml Fragment.
Definition yatexml.h:895
virtual XmlFragment * fragment()
Definition yatexml.h:918
virtual XmlSaxParser::Error addChild(XmlChild *child)
void copy(const XmlFragment &other, XmlParent *parent=0)
XmlElement * popElement()
XmlFragment(const XmlFragment &orig)
void toString(String &dump, bool escape=true, const String &indent=String::empty(), const String &origIndent=String::empty(), bool completeOnly=true, const String *auth=0, const XmlElement *parent=0) const
static XmlText * findText(ObjList *lst)
Definition yatexml.h:1028
virtual void clearChildren()
Definition yatexml.h:964
virtual const ObjList & getChildren() const
Definition yatexml.h:925
XmlChild * pop()
Definition yatexml.h:944
void replaceParams(const NamedList ¶ms)
static XmlElement * findElement(ObjList *list, const String *name, const String *ns, bool noPrefix=true)
Definition yatexml.h:1006
virtual XmlChild * removeChild(XmlChild *child, bool delObj=true)
static XmlElement * getElement(ObjList *&lst, const String *name=0, const String *ns=0, bool noPrefix=true)
static XmlText * getText(ObjList *&lst)
Definition yatexml.h:1036
Xml Parent.
Definition yatexml.h:543
virtual ~XmlParent()
Definition yatexml.h:554
virtual XmlFragment * fragment()
Definition yatexml.h:570
virtual XmlDocument * document()
Definition yatexml.h:562
virtual XmlChild * removeChild(XmlChild *child, bool delObj=true)=0
XmlParent()
Definition yatexml.h:548
virtual void reset()
Definition yatexml.h:616
virtual void clearChildren()
Definition yatexml.h:631
virtual XmlElement * element()
Definition yatexml.h:578
virtual const ObjList & getChildren() const
Definition yatexml.h:624
bool hasChildren() const
Definition yatexml.h:638
XmlChild * addChildSafe(XmlChild *child, XmlSaxParser::Error *code=0)
Definition yatexml.h:594
virtual XmlSaxParser::Error addChild(XmlChild *child)=0
Serial Access XML Parser.
Definition yatexml.h:67
void resetError()
Definition yatexml.h:392
static bool unEscape(String &text, const char *str, unsigned int len, String *error, bool inText=false, bool *found=0)
String * extractName(bool &empty)
static bool unEscape(String &text, String *error, bool *found=0)
Definition yatexml.h:266
static const char * getError(int code, const char *defVal="Xml error")
Definition yatexml.h:202
static bool checkFirstNameCharacter(unsigned char ch)
Definition yatexml.h:219
static const XmlEscape s_escape[]
Definition yatexml.h:295
virtual bool completed()
Definition yatexml.h:483
unsigned int offset() const
Definition yatexml.h:110
unsigned int m_row
Definition yatexml.h:509
Type m_unparsed
Definition yatexml.h:535
Type unparsed()
Definition yatexml.h:175
bool processElement(NamedList &list, bool empty)
virtual void gotText(const String &text)
Definition yatexml.h:442
NamedList m_parsed
Definition yatexml.h:530
unsigned int m_offset
Definition yatexml.h:504
static bool checkNameCharacter(unsigned char ch)
Definition yatexml.h:237
unsigned int row() const
Definition yatexml.h:117
XmlSaxParser(const char *name="XmlSaxParser")
bool badCharacter(char c)
Definition yatexml.h:386
static bool checkDataChar(unsigned char c)
static bool blank(char c)
Definition yatexml.h:210
unsigned int column() const
Definition yatexml.h:124
virtual void gotDeclaration(const NamedList &decl)
Definition yatexml.h:434
virtual void endElement(const String &name)
Definition yatexml.h:467
bool parse(const char *data)
virtual void gotDoctype(const String &doc)
Definition yatexml.h:475
virtual void gotElement(const NamedList &element, bool empty)
Definition yatexml.h:459
void setUnparsed(Type id)
Definition yatexml.h:182
static bool validTag(const String &buf)
virtual void gotProcessing(const NamedString &instr)
Definition yatexml.h:426
static const TokenDict s_errorString[]
Definition yatexml.h:290
String m_buf
Definition yatexml.h:524
const String & buffer() const
Definition yatexml.h:131
NamedString * getAttribute()
virtual void gotComment(const String &text)
Definition yatexml.h:418
void unEscape(String &text)
virtual void gotCdata(const String &data)
Definition yatexml.h:450
bool processText(String &text)
bool setError(Error error, XmlChild *child=0)
const char * getError(const char *defVal="Xml error")
Definition yatexml.h:169
Error m_error
Definition yatexml.h:519
Error error()
Definition yatexml.h:153
const String & getBuffer() const
Definition yatexml.h:193
unsigned int m_column
Definition yatexml.h:514
void resetParsed()
Definition yatexml.h:398
static String & escape(String &buf, const String &text)
Xml Declaration.
Definition yatexml.h:1880
void setText(const void *buf, unsigned int len)
Definition yatexml.h:1925
XmlText(const char *text)
virtual void replaceParams(const NamedList ¶ms)
void setText(const char *text)
Definition yatexml.h:1917
void toString(String &dump, bool escape=true, const String &indent=String::empty(), const String *auth=0, const XmlElement *parent=0) const
XmlText(const void *buf, unsigned int len)
const String & getText() const
Definition yatexml.h:1910
XmlText(const XmlText &orig)
virtual XmlText * xmlText()
Definition yatexml.h:1945
const char * value
Definition yatexml.h:54
char replace
Definition yatexml.h:59
Definition yateclass.h:891