106 Options options = NoOptions,
107 const char * noIndentElements = NULL,
108 const char * defaultEncoding = NULL
114 void PrintOn(ostream & strm)
const;
120 bool Load(
const PString & data, Options options,
const char * defaultEncoding = NULL);
128 bool Save(Options options);
259 Options options = NoOptions,
260 const char * noIndentElements = NULL
267 Options options = NoOptions
331 virtual void Output(ostream & strm,
const PXMLBase & xml,
int indent)
const = 0;
344 struct PrintTraceClass
347 PrintTraceClass(
const PXMLObject *
object) : m_object(object) { }
349 friend ostream &
operator<<(ostream & strm,
const PrintTraceClass & e);
350 PrintTraceClass PrintTrace() {
return PXMLObject::PrintTraceClass(
this); }
351 static PrintTraceClass PrintTrace(
PXMLObject * obj) {
return PrintTraceClass(obj); }
360 virtual void InternalPrintTrace(ostream & strm)
const = 0;
375 PXMLData(
const char * data,
int len);
383 void Output(ostream & strm,
const PXMLBase & xml,
int indent)
const;
391 virtual void InternalPrintTrace(ostream & strm)
const;
404 PXMLElement(
const char * name = NULL,
const char * data = NULL);
410 void PrintOn(ostream & strm)
const;
411 void Output(ostream & strm,
const PXMLBase & xml,
int indent)
const;
444 bool setDirty =
true);
488 virtual void InternalPrintTrace(ostream & strm)
const;
527 bool Parse(istream & strm);
528 bool Parse(
const char * data,
size_t dataLen,
bool final);
530 virtual void StartDocTypeDecl(
const char * docType,
const char * sysid,
const char * pubid,
int hasInternalSubSet);
532 virtual void XmlDecl(
const char * version,
const char * encoding,
int standAlone);
535 virtual void StartElement(
const char * name,
const char **attrs) = 0;
536 virtual void EndElement(
const char * name) = 0;
538 virtual void Entity(
const char *entityName,
539 int is_parameter_entity,
543 const char *systemId,
544 const char *publicId,
545 const char *notationName);
577 virtual void StartDocTypeDecl(
const char * docType,
const char * sysid,
const char * pubid,
int hasInternalSubSet);
578 virtual void XmlDecl(
const char * version,
const char * encoding,
int standAlone);
580 virtual void StartElement(
const char * name,
const char **attrs);
621 #endif // PTLIB_PXML_H
virtual PBoolean IsEmpty() const
Determine if the container is empty.
PXMLElement * m_parent
Definition: pxml.h:355
PXML & GetDocument() const
Definition: pxml.h:586
virtual PXMLObject * AddSubObject(PXMLObject *elem, bool dirty=true)
PCaselessString GetDocumentType() const
PXMLObject * Clone() const
Create a copy of the class on the heap.
PDECLARE_MUTEX(m_autoLoadMutex)
virtual bool Progress()
Definition: pxml.h:547
bool RemoveSubObject(PINDEX idx, bool dispose=true)
void SetFilePosition(unsigned col, unsigned line)
Definition: pxml.h:339
unsigned m_maxEntityLength
Definition: pxml.h:97
PTimer m_autoLoadTimer
Definition: pxml.h:282
const PCaselessString & GetDtdURI() const
Definition: pxml.h:217
PINDEX m_totalObjects
Definition: pxml.h:245
const PStringToString & GetAttributes() const
Definition: pxml.h:449
unsigned m_errorLine
Definition: pxml.h:238
PCaselessString PrependNamespace(const PCaselessString &name) const
This class defines an arbitrary time interval to millisecond accuracy.
Definition: timeint.h:51
void SetData(const PString &data)
virtual PINDEX GetSize() const
Get size of array.
virtual bool OnSaveProgress(unsigned) const
Definition: pxml.h:133
unsigned m_lineNumber
Definition: pxml.h:357
void FromConfig(const PConfig &cfg)
void GetFilePosition(unsigned &col, unsigned &line) const
Definition: pxml.h:338
const PCaselessString & GetName() const
Definition: pxml.h:413
virtual PXMLObject * Clone() const =0
Create a copy of the class on the heap.
unsigned GetErrorColumn() const
Definition: pxml.h:220
PFilePath m_loadFilename
Definition: pxml.h:226
PXMLObject * GetNextObject() const
void Output(ostream &strm, const PXMLBase &xml, int indent) const
unsigned GetErrorLine() const
Definition: pxml.h:221
ValidationOp m_op
Definition: pxml.h:188
virtual void AddCharacterData(const char *data, int len)=0
bool OutputIndent(ostream &strm, int indent, const PString &elementName=PString::Empty()) const
T * GetElementAs(const PCaselessString &name, const PCaselessString &attr, const PString &attrval) const
Definition: pxml.h:458
void SetAttribute(const PCaselessString &key, const PString &value, bool setDirty=true)
bool HasAttributes() const
Definition: pxml.h:448
PXMLObject * GetSubObject(PINDEX idx) const
PINDEX m_maxCount
Definition: pxml.h:199
void SetAttribute(const PCaselessString §ion, const PString &key, const PString &value)
virtual void Output(ostream &strm, const PXMLBase &xml, int indent) const =0
const PCaselessString & GetEncoding() const
Definition: pxml.h:208
PString m_value
Definition: pxml.h:388
A class representing a configuration for the application.
Definition: config.h:62
ValidationOp
Definition: pxml.h:156
This class is a standard C++ stream class descendent for reading or writing streamed data to or from ...
Definition: pstring.h:2188
PINDEX m_minCount
Definition: pxml.h:198
This is a dictionary collection class of PString objects, keyed by another string.
Definition: pstring.h:3151
This class describes a full description for a file on the particular platform.
Definition: filepath.h:61
virtual void StartElement(const char *name, const char **attrs)=0
virtual PXMLElement * CreateElement(const PCaselessString &name, const char *data=NULL)
This class is a variation of a string that ignores case.
Definition: pstring.h:2012
PXMLBase(Options opts=NoOptions)
PXMLElement * AddElement(const char *name)
const PCaselessString & GetVersion() const
Definition: pxml.h:207
virtual void XmlDecl(const char *version, const char *encoding, int standAlone)
virtual PObject * Clone()
bool Validate(const ValidationInfo *validator)
PSortedStringList m_noIndentElements
Definition: pxml.h:241
off_t m_consumed
Definition: pxml.h:558
Options m_options
Definition: pxml.h:96
const char * m_attributeValues
Definition: pxml.h:193
bool m_expandEntities
Definition: pxml.h:561
ValidationInfo * m_subElement
Definition: pxml.h:194
StandAloneType m_standAlone
Definition: pxml.h:230
virtual void StartDocTypeDecl(const char *docType, const char *sysid, const char *pubid, int hasInternalSubSet)
virtual PINDEX GetObjectCount() const
PCaselessString m_docType
Definition: pxml.h:231
P_DECLARE_BITWISE_ENUM_EX(Options, 8,(NoOptions, Indent, IndentWithTabs, NewLineAfterElement, NoIgnoreWhiteSpace, CloseExtended, WithNS, FragmentOnly, ExpandEntities), AllOptions=(1<< 8)-1)
PXMLElement * GetElement(const PCaselessString &name, const PCaselessString &attr, const PString &attrval) const
PCaselessString m_dtdURI
Definition: pxml.h:233
PCaselessString m_publicId
Definition: pxml.h:232
virtual void Entity(const char *entityName, int is_parameter_entity, const char *value, int value_length, const char *base, const char *systemId, const char *publicId, const char *notationName)
PXMLElement * SetRootElement(PXMLRootElement *root)
bool StartAutoReloadURL(const PURL &url, const PTimeInterval &timeout, const PTimeInterval &refreshTime, Options options=NoOptions)
virtual void XmlDecl(const char *version, const char *encoding, int standAlone)
bool IsDirty() const
Definition: pxml.h:336
PINDEX GetSize() const
Definition: pxml.h:425
bool HasSubObjects() const
Definition: pxml.h:430
T * GetElementAs(const PCaselessString &name, PINDEX idx=0) const
Definition: pxml.h:457
PArray< PXMLObject > m_subObjects
Definition: pxml.h:485
virtual PXMLRootElement * CreateRootElement(const PCaselessString &name)
PINDEX FindObject(const PXMLObject *ptr) const
const char * m_name
Definition: pxml.h:189
PString m_autoLoadError
Definition: pxml.h:286
virtual void EndDocTypeDecl()
const PString & GetString() const
Definition: pxml.h:381
bool LoadAndValidate(const PString &body, const PXML::ValidationInfo *validator, PString &error, Options options=NoOptions)
PString GetAttribute(const PCaselessString &key) const
PXMLParser(PXML &doc, Options options, off_t progressTotal)
virtual void StartNamespaceDeclHandler(const char *prefix, const char *uri)
bool GetDefaultNamespace(PCaselessString &str) const
static PString EscapeSpecialChars(const PString &string)
PXMLRootElement(PXML &doc, const char *name=NULL)
Definition: pxml.h:499
PXMLRootElement * m_rootElement
Definition: pxml.h:235
PXMLRootElement * GetRootElement() const
Definition: pxml.h:212
virtual void StartDocTypeDecl(const char *docType, const char *sysid, const char *pubid, int hasInternalSubSet)
PStringToString m_nameSpaces
Definition: pxml.h:593
virtual void EndElement(const char *name)=0
PStringToString m_nameSpaces
Definition: pxml.h:184
This is a sorted list collection class of PString objects.
Definition: pstring.h:2703
PXMLSettings(Options options=NewLineAfterElement)
bool Load(const PString &data)
bool m_userAborted
Definition: pxml.h:560
PXMLData(const PString &data)
PString GetData(bool trim=true) const
virtual void EndData()
Definition: pxml.h:467
friend ostream & operator<<(ostream &strm, const PObject &obj)
Global function for using the standard << operator on objects descended from PObject.
Definition: object.h:2387
virtual bool OutputProgress() const
PXMLElement * GetElement(PINDEX idx=0) const
void ReadFrom(istream &strm)
Input the contents of the object from the stream.
Abstract class defining I/O channel semantics.
Definition: channel.h:103
virtual PBoolean IsNoIndentElement(const PString &) const
Definition: pxml.h:88
unsigned GetMaxEntityLength() const
Definition: pxml.h:86
void GetErrorInfo(PString &errorString, unsigned &errorCol, unsigned &errorLine) const
bool Parse(istream &strm)
virtual PINDEX GetSize() const
Get the current size of the container.
PXML(Options options=NoOptions, const char *noIndentElements=NULL, const char *defaultEncoding=NULL)
bool PBoolean
Definition: object.h:174
bool LoadURL(const PURL &url)
void RemoveNamespace(const PString &prefix)
PURL m_autoloadURL
Definition: pxml.h:283
virtual bool OnLoadProgress(unsigned) const
Definition: pxml.h:124
bool HasAttribute(const PCaselessString §ion, const PString &key) const
void AddNamespace(const PString &prefix, const PString &uri)
#define PARRAY(cls, T)
Declare an array to a specific type of object.
Definition: array.h:985
PCaselessString m_defaultNameSpace
Definition: pxml.h:243
PCaselessString GetPathName() const
Get the completely qualified name for the element inside the XML tree, for example "root:trunk:branch...
bool SaveFile(const PFilePath &fn)
PString GetErrorString() const
Definition: pxml.h:219
bool m_dirty
Definition: pxml.h:356
PXMLElement * GetParent() const
Definition: pxml.h:320
The character string class.
Definition: pstring.h:108
off_t m_total
Definition: pxml.h:557
PINDEX GetNumElements() const
void GetFilePosition(unsigned &col, unsigned &line) const
PCaselessString m_name
Definition: pxml.h:480
virtual PXMLElement * CreateElement(const PCaselessString &name, const char *data=NULL)
const PCaselessString & GetDocType() const
Definition: pxml.h:215
virtual void AddCharacterData(const char *data, int len)
PTimeInterval m_autoLoadWaitTime
Definition: pxml.h:284
void SetName(const PString &v)
Definition: pxml.h:416
PDECLARE_NOTIFIER(PTimer, PXML_HTTP, AutoReloadTimeout)
virtual void StartNamespaceDeclHandler(const char *prefix, const char *uri)
unsigned m_percent
Definition: pxml.h:247
virtual void StartElement(const char *name, const char **attrs)
const void * m_placeHolder
Definition: pxml.h:192
unsigned m_column
Definition: pxml.h:358
virtual void OnAutoLoad(PBoolean ok)
virtual void EndNamespaceDeclHandler(const char *prefix)
PXML & m_document
Definition: pxml.h:513
PXMLObject * Clone() const
Create a copy of the class on the heap.
This class defines a thread of execution in the system.
Definition: thread.h:66
bool IsLoaded() const
Definition: pxml.h:211
bool IsParsing() const
Definition: pxml.h:552
virtual void OnLoaded()
Definition: pxml.h:125
PXMLElement * m_currentElement
Definition: pxml.h:591
static const PString & Empty()
Return an empty string.
PXMLObjectArray GetSubObjects() const
Definition: pxml.h:462
virtual bool OutputProgress() const
Definition: pxml.h:91
bool LoadFile(const PFilePath &fn)
bool HasAttribute(const PCaselessString &key) const
PXML_HTTP(Options options=NoOptions, const char *noIndentElements=NULL)
PQueue< PXMLElement > messages
Definition: pxml.h:609
StandAloneType
Definition: pxml.h:73
PXMLElement(const PXMLElement ©)
virtual PBoolean IsElement() const =0
PCaselessString m_defaultNamespace
Definition: pxml.h:483
void * m_context
Definition: pxml.h:555
PXMLStreamParser(PXML &doc, Options options=NoOptions)
bool ValidateElement(ValidationContext &context, PXMLElement *element, const ValidationInfo *elements)
PINDEX m_savedObjects
Definition: pxml.h:246
PXML & m_document
Definition: pxml.h:589
void Output(ostream &strm, const PXMLBase &xml, int indent) const
virtual PINDEX GetObjectCount() const
Definition: pxml.h:325
StandAloneType GetStandAlone() const
Definition: pxml.h:209
PXMLData * m_lastData
Definition: pxml.h:592
void SetMaxEntityLength(unsigned len)
Definition: pxml.h:85
virtual void EndElement(const char *name)
void ToConfig(PConfig &cfg) const
PBoolean IsElement() const
Definition: pxml.h:377
Options GetOptions() const
Definition: pxml.h:83
const PCaselessString & GetPubicIdentifier() const
Definition: pxml.h:216
virtual PBoolean IsNoIndentElement(const PString &elementName) const
PString GetAttribute(const PCaselessString §ion, const PString &key) const
void SetOptions(Options opts)
Definition: pxml.h:82
virtual void EndElement(const char *name)
void SetString(const PString &str, bool dirty=true)
bool m_parsing
Definition: pxml.h:556
unsigned m_percent
Definition: pxml.h:559
PCaselessString m_version
Definition: pxml.h:228
PXMLParserBase(PXMLBase::Options options, const char *encoding)
PString GetAutoReloadStatus() const
P_REMOVE_VIRTUAL(PXMLObject *, Clone(PXMLElement *) const, 0)
PXMLRootElement(PXML &doc, const PXMLElement ©)
Definition: pxml.h:504
PStringToString m_attributes
Definition: pxml.h:481
const char * m_namespace
Definition: pxml.h:195
Ultimate parent class for all objects in the class library.
Definition: object.h:2204
bool SetParent(PXMLElement *parent)
PCaselessString m_encoding
Definition: pxml.h:229
PStringStream m_errorString
Definition: pxml.h:237
bool GetNamespace(const PCaselessString &prefix, PCaselessString &str) const
This class describes a Universal Resource Locator.
Definition: url.h:56
void PrintOn(ostream &strm) const
Output the contents of the object to the stream.
bool ValidateElements(ValidationContext &context, PXMLElement *baseElement, const ValidationInfo *elements)
PString m_defaultNameSpace
Definition: pxml.h:183
PStringToString m_nameSpaces
Definition: pxml.h:482
virtual PXMLElement * Read(PChannel *channel)
virtual PINDEX GetObjectCount() const
T * GetElementAs(PINDEX idx=0) const
Definition: pxml.h:456
PBoolean IsElement() const
Definition: pxml.h:408
bool GetURIForNamespace(const PCaselessString &prefix, PCaselessString &uri) const
void PrintOn(ostream &strm) const
Output the contents of the object to the stream.
virtual PXMLData * AddData(const PString &data)
unsigned m_errorColumn
Definition: pxml.h:239
virtual PXMLElement * CreateElement(const PCaselessString &name, const char *data=NULL)