26 #error C++ is required
29 #include <yateclass.h>
117 inline unsigned int row()
const
139 bool parse(
const char* data);
162 bool setError(Error error,
XmlChild* child = 0);
169 inline const char*
getError(
const char* defVal =
"Xml error")
170 {
return getError(m_error,defVal); }
176 {
return m_unparsed; }
188 virtual void reset();
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); }
219 static bool checkFirstNameCharacter(
unsigned char ch);
226 static bool checkDataChar(
unsigned char c);
233 static bool checkNameCharacter(
unsigned char ch);
240 static bool validTag(
const String& buf);
271 bool parseInstruction();
299 bool parseDeclaration();
336 void unEscape(
String& text);
349 {
return c ==
'<' || c ==
'>'; }
355 { m_error = NoError; }
361 { m_parsed.clear(); m_parsed.clearParams(); }
367 String* extractName(
bool& empty);
454 bool processElement(
NamedList& list,
bool empty);
461 bool processText(
String& text);
548 virtual XmlSaxParser::Error addChild(
XmlChild* child) = 0;
557 XmlSaxParser::Error err = addChild(child);
558 if (err != XmlSaxParser::NoError) {
601 {
return getChildren().skipNull() != 0; }
617 XmlDomParser(
const char* name =
"XmlDomParser",
bool fragment =
false);
648 virtual void reset();
656 {
return el == m_current; }
664 virtual void gotComment(
const String& text);
670 virtual void gotProcessing(
const NamedString& instr);
676 virtual void gotDeclaration(
const NamedList& decl);
682 virtual void gotText(
const String& text);
688 virtual void gotCdata(
const String& data);
695 virtual void gotElement(
const NamedList& element,
bool empty);
701 virtual void endElement(
const String& name);
707 virtual void gotDoctype(
const String& doc);
714 {
return m_current == 0; }
807 XmlDeclaration(
const char* version =
"1.0",
const char* enc =
"utf-8");
831 {
return m_declaration; }
846 void toString(
String& dump,
bool escape =
true)
const;
895 virtual XmlSaxParser::Error addChild(
XmlChild* child);
900 virtual void reset();
907 {
return static_cast<XmlChild*
>(m_list.remove(
false)); }
956 void replaceParams(
const NamedList& params);
969 bool noPrefix =
true);
1009 virtual XmlSaxParser::Error addChild(
XmlChild* child);
1024 {
return before ? m_beforeRoot : m_afterRoot; }
1031 XmlElement* root(
bool completed =
false)
const;
1049 virtual void reset();
1058 {
return m_beforeRoot.removeChild(child,delObj); }
1066 virtual XmlSaxParser::Error read(
Stream& in,
int* error = 0);
1080 virtual int write(
Stream& out,
bool escape =
true,
1082 bool completeOnly =
true)
const;
1091 XmlSaxParser::Error loadFile(
const char* file,
int* error = 0);
1103 int saveFile(
const char* file = 0,
bool escape =
true,
1105 const char* eoln =
"\r\n")
const;
1121 void replaceParams(
const NamedList& params);
1153 XmlElement(
const char* name,
bool complete =
true);
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); }
1199 void setUnprefixedTag(
const String& s);
1206 {
return m_prefixed ? m_prefixed->name() :
static_cast<const String&
>(m_element); }
1214 bool getTag(
const String*& tag,
const String*& ns)
const;
1234 virtual XmlSaxParser::Error addChild(
XmlChild* child);
1248 { m_complete =
true; }
1254 {
return m_complete; }
1267 {
return m_parent ? m_parent->
element() : 0; }
1273 {
return m_parent; }
1279 virtual void setParent(
XmlParent* parent);
1285 {
return m_element; }
1291 {
return m_element; }
1298 {
return m_children.getChildren(); }
1304 {
return m_children.clearChildren(); }
1311 {
return m_inheritedNs; }
1318 void setInheritedNs(
const XmlElement* xml = 0,
bool inherit =
true);
1324 void addInheritedNs(
const NamedList& list);
1334 m_children.removeChild(x,
false);
1343 {
return m_element; }
1358 const String* auth = 0)
const;
1370 bool noPrefix =
true)
const
1383 bool noPrefix =
true)
const
1397 const String* ns = 0,
bool noPrefix =
true)
const {
1399 return findFirstChild(name,ns,noPrefix);
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;
1442 const String& getText()
const;
1451 XmlText* setText(
const char* text);
1457 void addText(
const char* text);
1464 {
return m_element; }
1472 unsigned int copyAttributes(
NamedList& list,
const String& prefix)
const;
1481 void setAttributes(
NamedList& list,
const String& prefix,
bool skipPrefix =
true);
1489 { m_element.setParam(name,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;
1579 virtual void replaceParams(
const NamedList& params);
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() {
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; }
1831 virtual void replaceParams(
const NamedList& params);
1863 {
return m_doctype; }
const char * getError(const char *defVal="Xml error")
Definition: yatexml.h:169
const String * childText(const String &name, const String *ns=0, bool noPrefix=true) const
Definition: yatexml.h:1427
virtual XmlText * xmlText()
Definition: yatexml.h:1818
Xml Declaration.
Definition: yatexml.h:798
virtual ~XmlParent()
Definition: yatexml.h:516
bool startsWith(const char *what, bool wordBreak=false, bool caseInsensitive=false) const
void clearChildren()
Definition: yatexml.h:1303
const char * tag() const
Definition: yatexml.h:1178
Document Object Model XML Parser.
Definition: yatexml.h:608
const String & getDoctype() const
Definition: yatexml.h:1862
virtual XmlCData * xmlCData()
Definition: yatexml.h:761
String m_buf
Definition: yatexml.h:486
Xml Document.
Definition: yatexml.h:979
virtual const ObjList & getChildren() const
Definition: yatexml.h:887
const ObjList & getChildren() const
Definition: yatexml.h:1297
XmlChild * pop()
Definition: yatexml.h:906
Xml Declaration.
Definition: yatexml.h:1767
virtual void gotText(const String &text)
Definition: yatexml.h:404
virtual void gotElement(const NamedList &element, bool empty)
Definition: yatexml.h:421
XmlDocument * document()
Definition: yatexml.h:635
XmlParent()
Definition: yatexml.h:510
char replace
Definition: yatexml.h:59
virtual bool completed()
Definition: yatexml.h:713
NamedList m_parsed
Definition: yatexml.h:492
Xml Fragment.
Definition: yatexml.h:856
Serial Access XML Parser.
Definition: yatexml.h:66
XmlChild * addChildSafe(XmlChild *child, XmlSaxParser::Error *code=0)
Definition: yatexml.h:556
unsigned int column() const
Definition: yatexml.h:124
Xml Child.
Definition: yatexml.h:726
virtual XmlChild * removeChild(XmlChild *child, bool delObj=true)
Definition: yatexml.h:1057
virtual XmlDoctype * xmlDoctype()
Definition: yatexml.h:782
virtual const ObjList & getChildren() const
Definition: yatexml.h:586
Xml Element.
Definition: yatexml.h:1136
void setAttribute(const String &name, const char *value)
Definition: yatexml.h:1488
void resetError()
Definition: yatexml.h:354
const String & getText() const
unsigned int m_column
Definition: yatexml.h:476
virtual XmlCData * xmlCData()
Definition: yatexml.h:1756
const String & getCData() const
Definition: yatexml.h:1742
ObjList * find(const GenObject *obj) const
int lookup(const char *str, const TokenDict *tokens, int defvalue=0, int base=0)
bool isCurrent(const XmlElement *el) const
Definition: yatexml.h:655
void destruct(GenObject *obj)
Definition: yateclass.h:1157
virtual XmlFragment * fragment()
Definition: yatexml.h:532
virtual void gotProcessing(const NamedString &instr)
Definition: yatexml.h:388
virtual void gotDeclaration(const NamedList &decl)
Definition: yatexml.h:396
bool hasAttribute(const String &name, const String &value) const
Definition: yatexml.h:1525
virtual XmlDoctype * xmlDoctype()
Definition: yatexml.h:1869
const String & getTag() const
Definition: yatexml.h:1205
const char * attribute(const String &name) const
Definition: yatexml.h:1508
bool hasChildren() const
Definition: yatexml.h:600
static const char * getError(int code, const char *defVal="Xml error")
Definition: yatexml.h:202
A holder for a debug level.
Definition: yateclass.h:311
XmlElement * parent() const
Definition: yatexml.h:1266
virtual void setCompleted()
Definition: yatexml.h:1247
virtual bool completed()
Definition: yatexml.h:445
virtual const String & getName() const
Definition: yatexml.h:1284
virtual const NamedList & getElement() const
Definition: yatexml.h:1290
bool hasXmlns(const String &ns) const
Definition: yatexml.h:1558
virtual void replaceParams(const NamedList ¶ms)
Definition: yatexml.h:789
static const ObjList & empty()
virtual void clearChildren()
Definition: yatexml.h:593
virtual void endElement(const String &name)
Definition: yatexml.h:429
A named string class.
Definition: yateclass.h:3480
virtual void gotCdata(const String &data)
Definition: yatexml.h:412
virtual XmlFragment * fragment()
Definition: yatexml.h:880
const NamedList & attributes() const
Definition: yatexml.h:1463
virtual void gotComment(const String &text)
Definition: yatexml.h:380
const String & getText() const
Definition: yatexml.h:1791
bool null(const char *str)
Definition: yateclass.h:3179
virtual XmlText * xmlText()
Definition: yatexml.h:768
virtual void reset()
Definition: yatexml.h:578
A named string container class.
Definition: yateclass.h:5015
const NamedList * inheritedNs() const
Definition: yatexml.h:1310
virtual XmlElement * xmlElement()
Definition: yatexml.h:1220
void setText(const char *text)
Definition: yatexml.h:1798
bool completed() const
Definition: yatexml.h:1253
Type m_unparsed
Definition: yatexml.h:497
const NamedList & getDec() const
Definition: yatexml.h:830
An abstract stream class capable of reading and writing.
Definition: yateclass.h:6873
virtual const String & toString() const
Definition: yatexml.h:1342
void setUnparsed(Type id)
Definition: yatexml.h:182
unsigned int m_offset
Definition: yatexml.h:466
Definition: yatexml.h:1837
void setAttributeValid(const String &name, const char *value)
Definition: yatexml.h:1496
virtual XmlDeclaration * xmlDeclaration()
Definition: yatexml.h:838
const String & buffer() const
Definition: yatexml.h:131
XmlElement * findFirstChild(const String &name, const String *ns=0, bool noPrefix=true) const
Definition: yatexml.h:1382
ObjList * skipNext() const
const char * value
Definition: yatexml.h:54
virtual XmlElement * element()
Definition: yatexml.h:1227
const String & unprefixedTag() const
Definition: yatexml.h:1192
virtual void setParent(XmlParent *parent)
Definition: yatexml.h:740
Definition: yateclass.h:219
XmlElement * pop()
Definition: yatexml.h:1330
virtual XmlParent * getParent()
Definition: yatexml.h:1272
unsigned int offset() const
Definition: yatexml.h:110
XmlElement * findNextChild(const XmlElement *prev=0, const String *name=0, const String *ns=0, bool noPrefix=true) const
Definition: yatexml.h:1396
void removeAttribute(const String &name)
Definition: yatexml.h:1534
static bool blank(char c)
Definition: yatexml.h:210
A C-style string handling class.
Definition: yateclass.h:2130
Error error()
Definition: yatexml.h:153
const XmlFragment & getFragment(bool before) const
Definition: yatexml.h:1023
Error m_error
Definition: yatexml.h:481
Definition: yateclass.h:848
static const String s_nsPrefix
Definition: yatexml.h:1642
virtual XmlDocument * document()
Definition: yatexml.h:997
Type unparsed()
Definition: yatexml.h:175
An object list class.
Definition: yateclass.h:1453
String * getAttribute(const String &name) const
Definition: yatexml.h:1516
XmlFragment * fragment()
Definition: yatexml.h:642
static bool isXmlns(const String &str)
Definition: yatexml.h:1587
XmlElement * findFirstChild(const String *name=0, const String *ns=0, bool noPrefix=true) const
Definition: yatexml.h:1369
void resetParsed()
Definition: yatexml.h:360
void YCLASS(class type, class base)
virtual XmlElement * element()
Definition: yatexml.h:540
bool isDefaultNs() const
Definition: yatexml.h:1185
XmlElement * takeRoot(bool completed=false)
Definition: yatexml.h:1038
Xml Declaration.
Definition: yatexml.h:1716
bool badCharacter(char c)
Definition: yatexml.h:348
static const String & empty()
bool empty() const
Definition: yatexml.h:1259
XmlElement * findNextChild(const String &name, const XmlElement *prev=0, const String *ns=0, bool noPrefix=true) const
Definition: yatexml.h:1414
virtual void gotDoctype(const String &doc)
Definition: yatexml.h:437
virtual XmlComment * xmlComment()
Definition: yatexml.h:754
unsigned int row() const
Definition: yatexml.h:117
virtual XmlDocument * document()
Definition: yatexml.h:524
virtual XmlElement * xmlElement()
Definition: yatexml.h:747
Xml Parent.
Definition: yatexml.h:504
String * xmlns() const
Definition: yatexml.h:1541
const String & getBuffer() const
Definition: yatexml.h:193
static const String s_ns
Definition: yatexml.h:1637
virtual XmlDeclaration * xmlDeclaration()
Definition: yatexml.h:775
static XmlElement * findElement(ObjList *list, const String *name, const String *ns, bool noPrefix=true)
Definition: yateclass.h:1048
virtual void clearChildren()
Definition: yatexml.h:926
unsigned int m_row
Definition: yatexml.h:471