mirror of
https://github.com/Kiritow/MiniEngine.git
synced 2024-03-22 13:11:22 +08:00
Add support functions of XML Node
This commit is contained in:
parent
fc4940c09b
commit
d47a3ed09d
|
@ -9,6 +9,107 @@ namespace MiniEngine
|
||||||
namespace XML
|
namespace XML
|
||||||
{
|
{
|
||||||
|
|
||||||
|
void Node::push_front(const Node& node)
|
||||||
|
{
|
||||||
|
_pnode->prepend_node(node._pnode);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::push_back(const Node& node)
|
||||||
|
{
|
||||||
|
_pnode->append_node(node._pnode);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::insert(const Node& where, const Node& val)
|
||||||
|
{
|
||||||
|
_pnode->insert_node(where._pnode,val._pnode);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::remove_first_node()
|
||||||
|
{
|
||||||
|
_pnode->remove_first_node();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::remove_last_node()
|
||||||
|
{
|
||||||
|
_pnode->remove_last_node();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::remove_node(const Node& todelete)
|
||||||
|
{
|
||||||
|
_pnode->remove_node(todelete._pnode);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::remove_all_node()
|
||||||
|
{
|
||||||
|
_pnode->remove_all_nodes();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::push_front(const Attribute& attr)
|
||||||
|
{
|
||||||
|
_pnode->prepend_attribute(attr._get());
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::push_back(const Attribute& attr)
|
||||||
|
{
|
||||||
|
_pnode->append_attribute(attr._get());
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::insert(const Attribute& where, const Attribute& val)
|
||||||
|
{
|
||||||
|
_pnode->insert_attribute(where._get(),val._get());
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::remove_first_attr()
|
||||||
|
{
|
||||||
|
_pnode->remove_first_attribute();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::remove_last_attr()
|
||||||
|
{
|
||||||
|
_pnode->remove_last_attribute();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::remove_attr(const Attribute& todelete)
|
||||||
|
{
|
||||||
|
_pnode->remove_attribute(todelete._get());
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::remove_all_attr()
|
||||||
|
{
|
||||||
|
_pnode->remove_all_attributes();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Node::hasPrevNode() const
|
||||||
|
{
|
||||||
|
return _pnode->previous_sibling()!=nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Node::hasNextNode() const
|
||||||
|
{
|
||||||
|
return _pnode->next_sibling()!=nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Node::hasParentNode() const
|
||||||
|
{
|
||||||
|
return _pnode->parent()!=nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
Node Node::getPrevNode() const
|
||||||
|
{
|
||||||
|
return Node(_pnode->previous_sibling());
|
||||||
|
}
|
||||||
|
|
||||||
|
Node Node::getNextNode() const
|
||||||
|
{
|
||||||
|
return Node(_pnode->next_sibling());
|
||||||
|
}
|
||||||
|
|
||||||
|
Node Node::getParentNode() const
|
||||||
|
{
|
||||||
|
return Node(_pnode->parent());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Document::Document()
|
Document::Document()
|
||||||
{
|
{
|
||||||
_is_ready=false;
|
_is_ready=false;
|
||||||
|
@ -65,17 +166,17 @@ bool Document::ready()
|
||||||
Node Document::newNode(const std::string& name,const std::string& value)
|
Node Document::newNode(const std::string& name,const std::string& value)
|
||||||
{
|
{
|
||||||
Node node;
|
Node node;
|
||||||
node._pnode=_doc.allocate_node(rapidxml::node_type::node_element,
|
node._set(_doc.allocate_node(rapidxml::node_type::node_element,
|
||||||
_allocate_string(name),_allocate_string(value));
|
_allocate_string(name),_allocate_string(value)));
|
||||||
node._pdoc=this;
|
node._setdoc(this);
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
Attribute Document::newAttr(const std::string& name,const std::string& value)
|
Attribute Document::newAttr(const std::string& name,const std::string& value)
|
||||||
{
|
{
|
||||||
Attribute attr;
|
Attribute attr;
|
||||||
attr._pattr=_doc.allocate_attribute(_allocate_string(name),_allocate_string(value));
|
attr._set(_doc.allocate_attribute(_allocate_string(name),_allocate_string(value)));
|
||||||
attr._pdoc=this;
|
attr._setdoc(this);
|
||||||
return attr;
|
return attr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,15 +17,27 @@ class Document;
|
||||||
|
|
||||||
class Attribute
|
class Attribute
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
void _set(XAttr*);
|
||||||
|
XAttr* _get() const;
|
||||||
|
void _clear();
|
||||||
|
void _setdoc(Document*);
|
||||||
private:
|
private:
|
||||||
XAttr* _pattr;
|
XAttr* _pattr;
|
||||||
Document* _pdoc;
|
Document* _pdoc;
|
||||||
friend class Document;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class Node
|
class Node
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
void _set(XNode*);
|
||||||
|
XNode* _get();
|
||||||
|
void _clear();
|
||||||
|
void _setdoc(Document*);
|
||||||
|
|
||||||
|
Node();
|
||||||
|
Node(XNode*);
|
||||||
|
|
||||||
void push_front(const Node&);
|
void push_front(const Node&);
|
||||||
void push_back(const Node&);
|
void push_back(const Node&);
|
||||||
void insert(const Node& where,const Node& val);
|
void insert(const Node& where,const Node& val);
|
||||||
|
@ -56,10 +68,11 @@ public:
|
||||||
Node getNextNode() const;
|
Node getNextNode() const;
|
||||||
Node getParentNode() const;
|
Node getParentNode() const;
|
||||||
|
|
||||||
|
Node clone();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
XNode* _pnode;
|
XNode* _pnode;
|
||||||
Document* _pdoc;
|
Document* _pdoc;
|
||||||
friend class Document;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class Document
|
class Document
|
||||||
|
|
Loading…
Reference in New Issue
Block a user