IMF MCA labels
[asdcplib.git] / src / KM_xml.h
index 13070fca8e1ab387a672a09f4a31c62279770922..80db74babd9d729c009229390900e032aa63d606 100644 (file)
@@ -1,5 +1,5 @@
 /*
-Copyright (c) 2005-2008, John Hurst
+Copyright (c) 2005-2011, John Hurst
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -96,12 +96,16 @@ namespace Kumu
       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);
@@ -112,12 +116,21 @@ namespace Kumu
       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