Exemple #1
0
xml_node* xml_node::next_child(void)
{
	acl_assert(child_iter_);

	ACL_XML_NODE* node = node_->iter_next(child_iter_, node_);
	if (node == NULL)
		return NULL;

	xml_node* n = NEW xml_node(node, xml_);
	nodes_tmp_.push_back(n);
	return n;
}
Exemple #2
0
	TiXmlNode* CEditInfo::xmlInsertNodeTextAfter(TiXmlNode* after_this, const string& node_name, const string& node_text)
	{
		TiXmlNode* node_exist = m_xml_doc.FirstChildElement(node_name);
		if ( node_exist )
			return node_exist;

		TiXmlElement xml_node(node_name);
		TiXmlText	 xml_node_txt(node_text);
		xml_node.InsertEndChild(xml_node_txt);
		node_exist = m_xml_doc.InsertAfterChild(after_this, xml_node);

		return node_exist;
	}
Exemple #3
0
xml_node* xml_node::first_child(void)
{
	if (child_iter_ == NULL)
		child_iter_ = (ACL_ITER*) acl_mymalloc(sizeof(ACL_ITER));

	ACL_XML_NODE* node = node_->iter_head(child_iter_, node_);
	if (node == NULL)
		return NULL;

	xml_node* n = NEW xml_node(node, xml_);
	nodes_tmp_.push_back(n);
	return n;
}
Exemple #4
0
xml_node& xml_node::get_parent() const
{
	if (parent_)
		return *parent_;
	else if (node_->parent == node_->xml->root)
		return xml_->get_root();
	else if (node_->parent == NULL)  // xxx: can this happen?
		return xml_->get_root();

	const_cast<xml_node*>(this)->parent_saved_ =
		NEW xml_node(node_->parent, xml_);
	const_cast<xml_node*>(this)->parent_ = parent_saved_;
	return *parent_saved_;
}
Exemple #5
0
const std::vector<xml_node*>& xml::getElementsByTagName(const char* tag) const
{
	const_cast<xml*>(this)->clear();

	ACL_ARRAY* a = acl_xml_getElementsByTagName(xml_, tag);
	if (a == NULL)
		return elements_;

	ACL_ITER iter;
	acl_foreach(iter, a)
	{
		ACL_XML_NODE *tmp = (ACL_XML_NODE*) iter.data;
		xml_node* node = NEW xml_node(tmp, const_cast<xml*>(this));
		const_cast<xml*>(this)->elements_.push_back(node);
	}
Exemple #6
0
xml_node* xml_node::first_child(void)
{
	if (child_iter_ == NULL)
		child_iter_ = (ACL_ITER*) acl_mymalloc(sizeof(ACL_ITER));

	ACL_XML_NODE* node = node_->iter_head(child_iter_, node_);
	if (node == NULL)
		return NULL;

	if (child_ == NULL)
		child_ = NEW xml_node(node, xml_);
	else
		child_->node_ = node;
	return child_;
}
Exemple #7
0
xml_node &xml_node::add_child(std::string const& name, unsigned line, bool text_node)
{
    children_.push_back(xml_node(tree_, name, line, text_node));
    return children_.back();
}
Exemple #8
0
#include "common.hpp"

#include "helpers.hpp"

#include <limits.h>

TEST_XML_FLAGS(dom_text_empty, "<node><a>foo</a><b><![CDATA[bar]]></b><c><?pi value?></c><d/></node>", parse_default | parse_pi)
{
    xml_node node = doc.child(STR("node"));

    CHECK(node.child(STR("a")).text());
    CHECK(node.child(STR("b")).text());
    CHECK(!node.child(STR("c")).text());
    CHECK(!node.child(STR("d")).text());
    CHECK(!xml_node().text());
    CHECK(!xml_text());

    generic_empty_test(node.child(STR("a")).text());
}

TEST_XML(dom_text_bool_ops, "<node>foo</node>")
{
    generic_bool_ops_test(doc.child(STR("node")).text());
}

TEST_XML_FLAGS(dom_text_get, "<node><a>foo</a><b><node/><![CDATA[bar]]></b><c><?pi value?></c><d/></node>", parse_default | parse_pi)
{
    xml_node node = doc.child(STR("node"));

    CHECK_STRING(node.child(STR("a")).text().get(), STR("foo"));
    CHECK_STRING(node.child(STR("a")).first_child().text().get(), STR("foo"));
Exemple #9
0
int _tmain(int argc, _TCHAR* argv[])
{
    tstring strUiresDir;    //uires路径,相对于当前路径
    tstring strSubDirs;     //搜索的子目录列表,子目录之间使用“|”分开.
    tstring strImgDir;      //图片目录,不要和子目录列表重复。imglist: file[3].png imgframe: file[3{2,2,2,2}].png
    bool    bBackup=true;
    int c;

    _tprintf(_T("%s\n"),GetCommandLine());

    while ((c = getopt(argc, argv, _T("p:s:i:b:c:"))) != EOF || optarg!=NULL)
    {
        switch (c)
        {
        case 'p':strUiresDir=optarg;break;
        case 's':strSubDirs=optarg;break;
        case 'i':strImgDir=optarg;break;
        case 'b': bBackup = _tcsicmp(optarg,_T("no"))==0?false:true;
        case 'c': g_bEnableColorize = _tcsicmp(optarg,_T("no"))==0?false:true;
        default: break;
        }
    }
    
    if(strUiresDir.empty() || strSubDirs.empty() || strImgDir.empty())
    {
        printUsage();
        return 1;
    }

    SetCurrentDirectory(strUiresDir.c_str());
    xml_document docUiIdx;
    if(!docUiIdx.load_file("uires.idx"))
    {
        printf("load uires.idx failed.");
        return 2;
    }
    
    vector<tstring> vecSubDirs;

    int iStart = 0;
    while(iStart<strSubDirs.size())
    {
        int iFind = strSubDirs.find(_T('|'),iStart);
        if(iFind == strSubDirs.npos)
            iFind = strSubDirs.size();
        tstring strSubDir = strSubDirs.substr(iStart,iFind - iStart);
        vecSubDirs.push_back(strSubDir);
        iStart = iFind + 1;
    }

    xml_node xmlRes = docUiIdx.child(_T("resource"));
    for(int i=0;i<vecSubDirs.size();i++)
    {
        xml_node xmlType = xmlRes.child(vecSubDirs[i].c_str());
        //make sure xmlType is an empty element
        if(xmlType) xmlRes.remove_child(xmlType);
        xmlType = xmlRes.append_child(vecSubDirs[i].c_str());
        
        ImportResource(xmlType,vecSubDirs[i].c_str(),_T(""),xml_node());
    }
    
    xml_node xmlImage = xmlRes.child(strImgDir.c_str());
    if(xmlImage) xmlRes.remove_child(xmlImage);
    xmlImage = xmlRes.append_child(strImgDir.c_str());

    xml_document docSkin;
    docSkin.load_file(L"values\\skin.xml");
    xml_node xmlSkin = docSkin.child(_T("skin"));
    if(!xmlSkin) xmlSkin = docSkin.append_child(_T("skin"));
    ImportResource(xmlImage,strImgDir,_T(""),xmlSkin);
    
    if(bBackup)
    {//备份数据
        ::CopyFile(_T("uires.idx"),_T("uires.bak.idx"),FALSE);
        ::CopyFile(_T("values\\skin.xml"),_T("values\\skin.bak.xml"),FALSE);
    }
    docUiIdx.save_file(L"uires.idx");
    docSkin.save_file(L"values\\skin.xml");
	return 0;
}
Exemple #10
0
    xml_node root ()
    {

      return xml_node(xmlDocGetRootElement(xmldoc_holder.get()));
    }