/*
-Copyright (c) 2005-2006, John Hurst
+Copyright (c) 2005-2011, John Hurst
All rights reserved.
Redistribution and use in source and binary forms, with or without
//
class XMLElement
{
+ KM_NO_COPY_CONSTRUCT(XMLElement);
+ XMLElement();
+
+ protected:
AttributeList m_AttrList;
ElementList m_ChildList;
const XMLNamespace* m_Namespace;
std::string m_Name;
std::string m_Body;
- KM_NO_COPY_CONSTRUCT(XMLElement);
- XMLElement();
-
public:
XMLElement(const char* name);
~XMLElement();
inline const XMLNamespace* Namespace() const { return m_Namespace; }
inline void SetNamespace(const XMLNamespace* ns) { assert(ns); m_Namespace = ns; }
+ bool ParseString(const char* document, ui32_t doc_len);
+ bool ParseString(const ByteString& document);
bool ParseString(const std::string& document);
// building
void SetName(const char* name);
+ void SetBody(const std::string& value);
void AppendBody(const std::string& value);
void SetAttr(const char* name, const char* value);
+ void SetAttr(const char* name, const std::string& value) { SetAttr(name, value.c_str()); }
+ XMLElement* AddChild(XMLElement* element);
XMLElement* AddChild(const char* name);
XMLElement* AddChildWithContent(const char* name, const char* value);
XMLElement* AddChildWithContent(const char* name, const std::string& value);
void RenderElement(std::string& outbuf, ui32_t depth) const;
// querying
- inline const std::string& GetBody() const { return m_Body; }
- const char* GetAttrWithName(const char* name) const;
- XMLElement* GetChildWithName(const char* name) const;
+ inline const std::string& GetBody() const { return m_Body; }
+ inline const ElementList& GetChildren() const { return m_ChildList; }
+ inline const std::string& GetName() const { return m_Name; }
+ inline const AttributeList& GetAttributes() const { return m_AttrList; }
+ const char* GetAttrWithName(const char* name) const;
+ XMLElement* GetChildWithName(const char* name) const;
const ElementList& GetChildrenWithName(const char* name, ElementList& outList) const;
- bool HasName(const char* name) const;
-
+ bool HasName(const char* name) const;
+
+ // altering
+ void DeleteAttributes();
+ void DeleteAttrWithName(const char* name);
+ void DeleteChildren();
+ void DeleteChild(const XMLElement* element);
+ void ForgetChild(const XMLElement* element);
};
} // namespace Kumu