8 #include <simgear/compiler.h>
14 #if !defined(FG_HAVE_NATIVE_SGI_COMPILERS)
15 FG_USING_STD(istream);
22 * Interface for XML attributes.
28 virtual ~ XMLAttributes ();
30 virtual int size () const = 0;
31 virtual const char * getName (int i) const = 0;
32 virtual const char * getValue (int i) const = 0;
34 virtual int findAttribute (const char * name) const;
35 virtual bool hasAttribute (const char * name) const;
36 virtual const char * getValue (const char * name) const;
41 * Default mutable attributes implementation.
43 class XMLAttributesDefault : public XMLAttributes
46 XMLAttributesDefault ();
47 XMLAttributesDefault (const XMLAttributes & atts);
48 virtual ~XMLAttributesDefault ();
50 virtual int size () const;
51 virtual const char * getName (int i) const;
52 virtual const char * getValue (int i) const;
54 virtual void addAttribute (const char * name, const char * value);
55 virtual void setName (int i, const char * name);
56 virtual void setValue (int i, const char * value);
57 virtual void setValue (const char * name, const char * value);
65 * Visitor class for an XML document.
67 * To read an XML document, a module must subclass the visitor to do
68 * something useful for the different XML events.
73 // start an XML document
74 virtual void startXML () {}
75 // end an XML document
76 virtual void endXML () {}
78 virtual void startElement (const char * name, const XMLAttributes &atts) {}
80 virtual void endElement (const char * name) {}
82 virtual void data (const char * s, int length) {}
83 // processing instruction
84 virtual void pi (const char * target, const char * data) {}
86 virtual void warning (const char * message, int line, int column) {}
88 virtual void error (const char * message, int line, int column) = 0;
93 * Read an XML document.
95 extern bool readXML (istream &input, XMLVisitor &visitor);
98 #endif // __EASYXML_HXX