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 == 0x09) || (c == 0x0d) || (c == 0x0a); }
349 {
return c ==
'<' || c ==
'>'; }
355 { m_error = NoError; }
361 { m_parsed.clear(); m_parsed.clearParams(); }
557 XmlSaxParser::Error err = addChild(child);
558 if (err != XmlSaxParser::NoError) {
559 TelEngine::destruct(child);
601 {
return getChildren().skipNull() != 0; }
617 XmlDomParser(
const char* name =
"XmlDomParser",
bool fragment =
false);
656 {
return el == m_current; }
714 {
return m_current == 0; }
831 {
return m_declaration; }
907 {
return static_cast<XmlChild*
>(m_list.remove(
false)); }
969 bool noPrefix =
true);
1024 {
return before ? m_beforeRoot : m_afterRoot; }
1058 {
return m_beforeRoot.removeChild(child,delObj); }
1082 bool completeOnly =
true)
const;
1091 XmlSaxParser::Error
loadFile(
const char* file,
int* error = 0);
1105 const char* eoln =
"\r\n")
const;
1161 XmlElement(
const char* name,
const char* value,
bool complete =
true);
1178 inline const char*
tag()
const
1179 {
return m_element; }
1186 {
return m_prefixed == 0; }
1193 {
return m_prefixed ? m_prefixed->name() :
static_cast<const String&
>(m_element); }
1206 {
return m_prefixed ? m_prefixed->name() :
static_cast<const String&
>(m_element); }
1248 { m_complete =
true; }
1254 {
return m_complete; }
1267 {
return m_parent ? m_parent->
element() : 0; }
1273 {
return m_parent; }
1285 {
return m_element; }
1291 {
return m_element; }
1298 {
return m_children.getChildren(); }
1304 {
return m_children.clearChildren(); }
1311 {
return m_inheritedNs; }
1334 m_children.removeChild(x,
false);
1343 {
return m_element; }
1358 const String* auth = 0)
const;
1370 bool noPrefix =
true)
const
1371 {
return XmlFragment::findElement(getChildren().skipNull(),name,ns,noPrefix); }
1383 bool noPrefix =
true)
const
1384 {
return XmlFragment::findElement(getChildren().skipNull(),&name,ns,noPrefix); }
1397 const String* ns = 0,
bool noPrefix =
true)
const {
1399 return findFirstChild(name,ns,noPrefix);
1401 return start ? XmlFragment::findElement(start->
skipNext(),name,ns,noPrefix) : 0;
1415 const String* ns = 0,
bool noPrefix =
true)
const
1416 {
return findNextChild(prev,&name,ns,noPrefix); }
1428 bool noPrefix =
true)
const {
1429 XmlElement* c = findFirstChild(&name,ns,noPrefix);
1430 return c ? &(c->
getText()) : 0;
1464 {
return m_element; }
1489 { m_element.setParam(name,value); }
1497 if (!TelEngine::null(value))
1498 m_element.setParam(name,value);
1500 removeAttribute(name);
1509 {
return m_element.getValue(name); }
1517 {
return m_element.getParam(name); }
1526 String* a = getAttribute(name);
1527 return a && *a == value;
1535 { m_element.clearParam(name); }
1543 return xmlnsAttribute(s_ns);
1544 return xmlnsAttribute(s_nsPrefix + *m_prefixed);
1559 const String* x = xmlns();
1560 return x && *x == ns;
1588 {
return str == s_ns || str.
startsWith(s_nsPrefix); }
1607 bool copyXml =
false);
1619 bool copyXml =
false);
1632 bool copyXml =
false);
1646 inline void setPrefixed() {
1647 TelEngine::destruct(m_prefixed);
1648 int pos = m_element.find(
":");
1650 m_prefixed =
new NamedString(m_element.substr(pos + 1),m_element.substr(0,pos));
1692 {
return m_comment; }
1863 {
return m_doctype; }
A holder for a debug level.
Definition yateclass.h:312
Definition yateclass.h:1049
A named string container class.
Definition yateclass.h:5016
void clearParams()
Definition yateclass.h:5070
NamedString * getParam(const String &name) const
NamedList & setParam(NamedString *param)
Definition yateclass.h:5094
const char * getValue(const String &name, const char *defvalue=0) const
NamedList & clearParam(const String &name, char childSep=0)
A named string class.
Definition yateclass.h:3481
const String & name() const
Definition yateclass.h:3495
An object list class.
Definition yateclass.h:1454
ObjList * find(const GenObject *obj) const
ObjList * skipNull() const
ObjList * skipNext() const
static const ObjList & empty()
GenObject * remove(bool delobj=true)
An abstract stream class capable of reading and writing.
Definition yateclass.h:6874
A C-style string handling class.
Definition yateclass.h:2131
int find(char what, unsigned int offs=0) const
bool startsWith(const char *what, bool wordBreak=false, bool caseInsensitive=false) const
static const String & empty()
String substr(int offs, int len=-1) const
Xml Declaration.
Definition yatexml.h:1717
const String & getCData() const
Definition yatexml.h:1742
void toString(String &dump, const String &indent=String::empty()) const
virtual XmlCData * xmlCData()
Definition yatexml.h:1756
XmlCData(const XmlCData &orig)
XmlCData(const String &data)
Xml Child.
Definition yatexml.h:727
virtual XmlElement * xmlElement()
Definition yatexml.h:747
virtual void replaceParams(const NamedList ¶ms)
Definition yatexml.h:789
virtual XmlComment * xmlComment()
Definition yatexml.h:754
virtual void setParent(XmlParent *parent)
Definition yatexml.h:740
virtual XmlCData * xmlCData()
Definition yatexml.h:761
virtual XmlDeclaration * xmlDeclaration()
Definition yatexml.h:775
virtual XmlDoctype * xmlDoctype()
Definition yatexml.h:782
virtual XmlText * xmlText()
Definition yatexml.h:768
Xml Declaration.
Definition yatexml.h:799
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:830
void toString(String &dump, bool escape=true) const
virtual XmlDeclaration * xmlDeclaration()
Definition yatexml.h:838
Definition yatexml.h:1838
XmlDoctype(const XmlDoctype &orig)
void toString(String &dump, const String &indent=String::empty()) const
const String & getDoctype() const
Definition yatexml.h:1862
XmlDoctype(const String &doctype)
virtual XmlDoctype * xmlDoctype()
Definition yatexml.h:1869
Xml Document.
Definition yatexml.h:980
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:997
XmlDeclaration * declaration() const
XmlElement * takeRoot(bool completed=false)
Definition yatexml.h:1038
const XmlFragment & getFragment(bool before) const
Definition yatexml.h:1023
void replaceParams(const NamedList ¶ms)
virtual XmlChild * removeChild(XmlChild *child, bool delObj=true)
Definition yatexml.h:1057
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:609
virtual bool completed()
Definition yatexml.h:713
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:635
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:655
XmlFragment * fragment()
Definition yatexml.h:642
Xml Element.
Definition yatexml.h:1137
XmlElement * parent() const
Definition yatexml.h:1266
XmlText * setText(const char *text)
bool hasAttribute(const String &name, const String &value) const
Definition yatexml.h:1525
void clearChildren()
Definition yatexml.h:1303
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:1396
virtual XmlElement * xmlElement()
Definition yatexml.h:1220
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:1508
const char * tag() const
Definition yatexml.h:1178
String * getAttribute(const String &name) const
Definition yatexml.h:1516
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:1414
virtual void replaceParams(const NamedList ¶ms)
String * xmlnsAttribute(const String &name) const
XmlElement * pop()
Definition yatexml.h:1330
XmlElement * findFirstChild(const String &name, const String *ns=0, bool noPrefix=true) const
Definition yatexml.h:1382
static bool isXmlns(const String &str)
Definition yatexml.h:1587
void setAttributeValid(const String &name, const char *value)
Definition yatexml.h:1496
String * xmlns() const
Definition yatexml.h:1541
bool empty() const
Definition yatexml.h:1259
XmlElement(const XmlElement &orig)
const NamedList & attributes() const
Definition yatexml.h:1463
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)
static const String s_ns
Definition yatexml.h:1637
void setInheritedNs(const XmlElement *xml=0, bool inherit=true)
virtual void setParent(XmlParent *parent)
virtual const String & toString() const
Definition yatexml.h:1342
unsigned int copyAttributes(NamedList &list, const String &prefix) const
virtual void setCompleted()
Definition yatexml.h:1247
void addText(const char *text)
virtual XmlElement * element()
Definition yatexml.h:1227
bool getTag(const String *&tag, const String *&ns) const
bool hasXmlns(const String &ns) const
Definition yatexml.h:1558
void setAttributes(NamedList &list, const String &prefix, bool skipPrefix=true)
virtual const String & getName() const
Definition yatexml.h:1284
XmlElement(const char *name, bool complete=true)
XmlChild * getFirstChild()
virtual XmlParent * getParent()
Definition yatexml.h:1272
virtual const NamedList & getElement() const
Definition yatexml.h:1290
bool completed() const
Definition yatexml.h:1253
const String & unprefixedTag() const
Definition yatexml.h:1192
XmlElement(const char *name, const char *value, bool complete=true)
const String & getText() const
virtual XmlChild * removeChild(XmlChild *child, bool delObj=true)
bool isDefaultNs() const
Definition yatexml.h:1185
const ObjList & getChildren() const
Definition yatexml.h:1297
const NamedList * inheritedNs() const
Definition yatexml.h:1310
void addInheritedNs(const NamedList &list)
XmlElement * findFirstChild(const String *name=0, const String *ns=0, bool noPrefix=true) const
Definition yatexml.h:1369
void removeAttribute(const String &name)
Definition yatexml.h:1534
void setAttribute(const String &name, const char *value)
Definition yatexml.h:1488
static NamedString * xml2param(XmlElement *xml, const String *tag, bool copyXml=false)
const String & getTag() const
Definition yatexml.h:1205
static const String s_nsPrefix
Definition yatexml.h:1642
const String * childText(const String &name, const String *ns=0, bool noPrefix=true) const
Definition yatexml.h:1427
Xml Fragment.
Definition yatexml.h:857
virtual XmlFragment * fragment()
Definition yatexml.h:880
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
virtual void clearChildren()
Definition yatexml.h:926
virtual const ObjList & getChildren() const
Definition yatexml.h:887
XmlChild * pop()
Definition yatexml.h:906
void replaceParams(const NamedList ¶ms)
static XmlElement * findElement(ObjList *list, const String *name, const String *ns, bool noPrefix=true)
virtual XmlChild * removeChild(XmlChild *child, bool delObj=true)
Xml Parent.
Definition yatexml.h:505
virtual ~XmlParent()
Definition yatexml.h:516
virtual XmlFragment * fragment()
Definition yatexml.h:532
virtual XmlDocument * document()
Definition yatexml.h:524
virtual XmlChild * removeChild(XmlChild *child, bool delObj=true)=0
XmlParent()
Definition yatexml.h:510
virtual void reset()
Definition yatexml.h:578
virtual void clearChildren()
Definition yatexml.h:593
virtual XmlElement * element()
Definition yatexml.h:540
virtual const ObjList & getChildren() const
Definition yatexml.h:586
bool hasChildren() const
Definition yatexml.h:600
XmlChild * addChildSafe(XmlChild *child, XmlSaxParser::Error *code=0)
Definition yatexml.h:556
virtual XmlSaxParser::Error addChild(XmlChild *child)=0
Serial Access XML Parser.
Definition yatexml.h:67
void resetError()
Definition yatexml.h:354
String * extractName(bool &empty)
static const char * getError(int code, const char *defVal="Xml error")
Definition yatexml.h:202
static bool checkFirstNameCharacter(unsigned char ch)
static const XmlEscape s_escape[]
Definition yatexml.h:257
virtual bool completed()
Definition yatexml.h:445
unsigned int offset() const
Definition yatexml.h:110
unsigned int m_row
Definition yatexml.h:471
Type m_unparsed
Definition yatexml.h:497
Type unparsed()
Definition yatexml.h:175
bool processElement(NamedList &list, bool empty)
virtual void gotText(const String &text)
Definition yatexml.h:404
NamedList m_parsed
Definition yatexml.h:492
unsigned int m_offset
Definition yatexml.h:466
static bool checkNameCharacter(unsigned char ch)
unsigned int row() const
Definition yatexml.h:117
XmlSaxParser(const char *name="XmlSaxParser")
bool badCharacter(char c)
Definition yatexml.h:348
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:396
virtual void endElement(const String &name)
Definition yatexml.h:429
bool parse(const char *data)
virtual void gotDoctype(const String &doc)
Definition yatexml.h:437
virtual void gotElement(const NamedList &element, bool empty)
Definition yatexml.h:421
void setUnparsed(Type id)
Definition yatexml.h:182
static bool validTag(const String &buf)
virtual void gotProcessing(const NamedString &instr)
Definition yatexml.h:388
static const TokenDict s_errorString[]
Definition yatexml.h:252
String m_buf
Definition yatexml.h:486
const String & buffer() const
Definition yatexml.h:131
NamedString * getAttribute()
virtual void gotComment(const String &text)
Definition yatexml.h:380
void unEscape(String &text)
virtual void gotCdata(const String &data)
Definition yatexml.h:412
static void escape(String &buf, const String &text)
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:481
Error error()
Definition yatexml.h:153
const String & getBuffer() const
Definition yatexml.h:193
unsigned int m_column
Definition yatexml.h:476
void resetParsed()
Definition yatexml.h:360
Xml Declaration.
Definition yatexml.h:1768
XmlText(const String &text)
virtual void replaceParams(const NamedList ¶ms)
void setText(const char *text)
Definition yatexml.h:1798
void toString(String &dump, bool escape=true, const String &indent=String::empty(), const String *auth=0, const XmlElement *parent=0) const
const String & getText() const
Definition yatexml.h:1791
XmlText(const XmlText &orig)
virtual XmlText * xmlText()
Definition yatexml.h:1818
const char * value
Definition yatexml.h:54
char replace
Definition yatexml.h:59
Definition yateclass.h:848