diff options
| author | jhurst <jhurst@cinecert.com> | 2007-06-08 02:24:37 +0000 |
|---|---|---|
| committer | jhurst <> | 2007-06-08 02:24:37 +0000 |
| commit | 3a3aa48a5a4f7324a9e4c2273d0747d7f58a2813 (patch) | |
| tree | bf218b1e6e4ee415ff94576e08b923801340c4a5 /src/KM_xml.h | |
| parent | 27915a74438fcf264d8dfd621dd5e79fa4065813 (diff) | |
fixed encryption for timed text
Diffstat (limited to 'src/KM_xml.h')
| -rw-r--r-- | src/KM_xml.h | 56 |
1 files changed, 47 insertions, 9 deletions
diff --git a/src/KM_xml.h b/src/KM_xml.h index ae24ac1..31f5064 100644 --- a/src/KM_xml.h +++ b/src/KM_xml.h @@ -41,41 +41,79 @@ namespace Kumu { class XMLElement; + // struct NVPair { std::string name; std::string value; }; + // typedef std::list<NVPair> AttributeList; - typedef AttributeList::iterator Attr_i; + typedef AttributeList::const_iterator Attr_i; typedef std::list<XMLElement*> ElementList; - typedef ElementList::iterator Elem_i; + typedef ElementList::const_iterator Elem_i; + + // + class XMLNamespace + { + std::string m_Prefix; + std::string m_Name; + + KM_NO_COPY_CONSTRUCT(XMLNamespace); + XMLNamespace(); + + public: + XMLNamespace(const char* prefix, const char* name) : m_Prefix(prefix), m_Name(name) {} + ~XMLNamespace() {} + + inline const std::string& Prefix() const { return m_Prefix; } + inline const std::string& Name() const { return m_Name; } + }; // class XMLElement { - AttributeList m_AttrList; - ElementList m_ChildList; + AttributeList m_AttrList; + ElementList m_ChildList; + const XMLNamespace* m_Namespace; + void* m_NamespaceOwner; + + std::string m_Name; + std::string m_Body; KM_NO_COPY_CONSTRUCT(XMLElement); XMLElement(); public: - std::string m_Name; - std::string m_Body; - 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 std::string& document); + bool TestString(const char* document, ui32_t len = 0); + + // building + void SetName(const char* name); + void AppendBody(const std::string& value); void SetAttr(const char* name, const char* value); XMLElement* AddChild(const char* name); XMLElement* AddChildWithContent(const char* name, const char* value); XMLElement* AddChildWithContent(const char* name, const std::string& value); XMLElement* AddChildWithPrefixedContent(const char* name, const char* prefix, const char* value); void AddComment(const char* value); - void Render(std::string&); - void RenderElement(std::string& outbuf, ui32_t depth); + void Render(std::string&) const; + 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; + const ElementList& GetChildrenWithName(const char* name, ElementList& outList) const; + bool HasName(const char* name) const; + }; } // namespace Kumu |
