: m_name(name), m_value(value), m_next(next) {}
virtual ~wxXmlAttribute() {}
- wxString GetName() const { return m_name; }
- wxString GetValue() const { return m_value; }
+ const wxString& GetName() const { return m_name; }
+ const wxString& GetValue() const { return m_value; }
wxXmlAttribute *GetNext() const { return m_next; }
void SetName(const wxString& name) { m_name = name; }
{
public:
wxXmlNode()
- : m_attrs(NULL), m_parent(NULL), m_children(NULL), m_next(NULL) {}
+ : m_attrs(NULL), m_parent(NULL), m_children(NULL), m_next(NULL),
+ m_lineNo(-1), m_noConversion(false)
+ {
+ }
+
wxXmlNode(wxXmlNode *parent, wxXmlNodeType type,
const wxString& name, const wxString& content = wxEmptyString,
- wxXmlAttribute *attrs = NULL, wxXmlNode *next = NULL);
+ wxXmlAttribute *attrs = NULL, wxXmlNode *next = NULL,
+ int lineNo = -1);
+
virtual ~wxXmlNode();
// copy ctor & operator=. Note that this does NOT copy syblings
// user-friendly creation:
wxXmlNode(wxXmlNodeType type, const wxString& name,
- const wxString& content = wxEmptyString);
+ const wxString& content = wxEmptyString,
+ int lineNo = -1);
virtual void AddChild(wxXmlNode *child);
- virtual bool InsertChild(wxXmlNode *child, wxXmlNode *before_node);
+ virtual bool InsertChild(wxXmlNode *child, wxXmlNode *followingNode);
+ virtual bool InsertChildAfter(wxXmlNode *child, wxXmlNode *precedingNode);
virtual bool RemoveChild(wxXmlNode *child);
- virtual void AddAttribute(const wxString& name, const wxString& value)
- { AddProperty(name, value); }
- virtual bool DeleteAttribute(const wxString& name)
- { return DeleteProperty(name); }
+ virtual void AddAttribute(const wxString& name, const wxString& value);
+ virtual bool DeleteAttribute(const wxString& name);
// access methods:
wxXmlNodeType GetType() const { return m_type; }
wxXmlAttribute *GetAttributes() const { return m_attrs; }
bool GetAttribute(const wxString& attrName, wxString *value) const;
wxString GetAttribute(const wxString& attrName,
- const wxString& defaultVal) const;
+ const wxString& defaultVal = wxEmptyString) const;
bool HasAttribute(const wxString& attrName) const;
+ int GetLineNumber() const { return m_lineNo; }
+
void SetType(wxXmlNodeType type) { m_type = type; }
void SetName(const wxString& name) { m_name = name; }
void SetContent(const wxString& con) { m_content = con; }
void SetChildren(wxXmlNode *child) { m_children = child; }
void SetAttributes(wxXmlAttribute *attr) { m_attrs = attr; }
- virtual void AddAttribute(wxXmlAttribute *attr)
- { AddProperty(attr); }
+ virtual void AddAttribute(wxXmlAttribute *attr);
+
+ // If true, don't do encoding conversion to improve efficiency - node content is ACII text
+ bool GetNoConversion() const { return m_noConversion; }
+ void SetNoConversion(bool noconversion) { m_noConversion = noconversion; }
#if WXWIN_COMPATIBILITY_2_8
wxDEPRECATED( inline wxXmlAttribute *GetProperties() const );
wxString m_content;
wxXmlAttribute *m_attrs;
wxXmlNode *m_parent, *m_children, *m_next;
+ int m_lineNo; // line number in original file, or -1
+ bool m_noConversion; // don't do encoding conversion - node is plain text
void DoCopy(const wxXmlNode& node);
};
const wxString& encoding = wxT("UTF-8"), int flags = wxXMLDOC_NONE);
virtual bool Load(wxInputStream& stream,
const wxString& encoding = wxT("UTF-8"), int flags = wxXMLDOC_NONE);
-
+
// Saves document as .xml file.
- virtual bool Save(const wxString& filename, int indentstep = 1) const;
- virtual bool Save(wxOutputStream& stream, int indentstep = 1) const;
+ virtual bool Save(const wxString& filename, int indentstep = 2) const;
+ virtual bool Save(wxOutputStream& stream, int indentstep = 2) const;
bool IsOk() const { return m_root != NULL; }