当前位置: 首页>>代码示例>>C++>>正文


C++ XMLElement::InsertFirstChild方法代码示例

本文整理汇总了C++中XMLElement::InsertFirstChild方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLElement::InsertFirstChild方法的具体用法?C++ XMLElement::InsertFirstChild怎么用?C++ XMLElement::InsertFirstChild使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在XMLElement的用法示例。


在下文中一共展示了XMLElement::InsertFirstChild方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: writeDictItem

void Configure::writeDictItem(int item)
{
    if (item > DICTNODE_NUM_MAX)
        return;
    SpinLock lock(m_cs);
    XMLElement* dictElement = XMLHandle(m_doc.RootElement()).FirstChildElement("dict").ToElement();
    XMLElement* e = util::XMLUtil::Child(dictElement, item);
    if (e == NULL) {
        e = m_doc.NewElement("d");
        e->SetAttribute("open",   m_dictNodes[item].open.c_str());
        e->SetAttribute("en",     m_dictNodes[item].en);

        XMLElement* textE = m_doc.NewElement("summary");
	    textE->InsertFirstChild(m_doc.NewText(m_dictNodes[item].summary.c_str()));
		e->InsertFirstChild(textE);

    	textE = m_doc.NewElement("path");
    	textE->InsertFirstChild(m_doc.NewText(m_dictNodes[item].path.c_str()));
    	e->InsertFirstChild(textE);

    	textE = m_doc.NewElement("name");
    	textE->InsertFirstChild(m_doc.NewText(m_dictNodes[item].name.c_str()));
    	e->InsertFirstChild(textE);

    	textE = m_doc.NewElement("detlan");
    	textE->InsertFirstChild(m_doc.NewText(m_dictNodes[item].detlan.c_str()));
    	e->InsertFirstChild(textE);

    	textE = m_doc.NewElement("srclan");
    	textE->InsertFirstChild(m_doc.NewText(m_dictNodes[item].srclan.c_str()));
    	e->InsertFirstChild(textE);

        dictElement->InsertEndChild(e);
    } else {
        e->SetAttribute("open",   m_dictNodes[item].open.c_str());
        e->SetAttribute("en",     m_dictNodes[item].en);

        XMLText* txt = e->FirstChildElement("path")->FirstChild()->ToText();
    	txt->SetValue(m_dictNodes[item].path.c_str());

        txt = e->FirstChildElement("name")->FirstChild()->ToText();
    	txt->SetValue(m_dictNodes[item].name.c_str());

        txt = XMLHandle(e).FirstChildElement("detlan").FirstChild().ToText();
        if (txt)
    	    txt->SetValue(m_dictNodes[item].detlan.c_str());

        txt = XMLHandle(e).FirstChildElement("srclan").FirstChild().ToText();
        if (txt)
    	    txt->SetValue(m_dictNodes[item].srclan.c_str());

        txt = XMLHandle(e).FirstChildElement("summary").FirstChild().ToText();
        if (txt)
            txt->SetValue(m_dictNodes[item].summary.c_str());
    }
    /*printf("writeDictItem(%s): %d, %s -> %s\n", ndname.c_str(), 
           item, m_dictNodes[item].srclan.c_str(), m_dictNodes[item].detlan.c_str());*/
    m_dirty = true;
}
开发者ID:kartorz,项目名称:AlphaDict,代码行数:59,代码来源:Configure.cpp

示例2: InsertElement

//================================================================================================================
void XMLParser::InsertElement(const char* childElementName, bool elementData)
{
	const char* elementStr = (elementData == true) ? "true" : "false";
	XMLElement* element = mDocument->NewElement(childElementName);
	element->InsertFirstChild(mDocument->NewText(elementStr));
	mRootNode->InsertEndChild(element);
}
开发者ID:henriyl,项目名称:ZShadeSandbox,代码行数:8,代码来源:XMLParser.cpp

示例3: Save

void ReminderManager::Save()
{
    ReminderQueue queue;

    // Create the document
    tinyxml2::XMLDocument document;
    XMLDeclaration *declaration = document.NewDeclaration();
    document.InsertEndChild(declaration);

    // Create the root node (<reminders>)
    XMLElement *rootElement = document.NewElement("reminders");
    document.InsertEndChild(rootElement);
    g_vbox->Log(ADDON::LOG_INFO, "Save(1): %u reminders", m_reminders.size());

    // Create one <reminder> for every reminder
    while (!m_reminders.empty())
    {
        ReminderPtr reminder = m_reminders.top();
        g_vbox->Log(ADDON::LOG_INFO, "Save(2): got reminder", m_reminders.size());
        XMLElement *reminderElement = document.NewElement("reminder");
        reminderElement->SetText(reminder->m_progName.c_str());
        reminderElement->SetAttribute("channel", reminder->m_channelXmltvName.c_str());
        reminderElement->SetAttribute("start-time", g_vbox->CreateTimestamp(reminder->m_startTime).c_str());
        rootElement->InsertFirstChild(reminderElement);
        m_reminders.pop();
        g_vbox->Log(ADDON::LOG_INFO, "Save(3): popped. Now pushing to queue", m_reminders.size());
        queue.push(reminder);
    }
    g_vbox->Log(ADDON::LOG_INFO, "Save(4): queue size %d, m_reminders size %d", queue.size(), m_reminders.size());
    m_reminders = queue;
    g_vbox->Log(ADDON::LOG_INFO, "Save(5): queue size %d, m_reminders size %d", queue.size(), m_reminders.size());

    XBMC->DeleteFile(REMINDERS_XML.c_str());
    // Save the file
    void *fileHandle = XBMC->OpenFileForWrite(REMINDERS_XML.c_str(), false);

    if (fileHandle)
    {
        XMLPrinter printer;
        document.Accept(&printer);

        //XBMC->TruncateFile()
        std::string xml = printer.CStr();
        XBMC->WriteFile(fileHandle, xml.c_str(), xml.length());

        XBMC->CloseFile(fileHandle);
    }
}
开发者ID:relipo,项目名称:pvr.vbox,代码行数:48,代码来源:ReminderManager.cpp

示例4: assert

tinyxml2::XMLElement * Splitter::appendXML( 
  tinyxml2::XMLDocument & doc, 
  tinyxml2::XMLElement * parent) const
{
  using namespace tinyxml2;
  // Call base class
  XMLElement * root = Node::appendXML(doc,parent);
  // Splitter specific values
  root->SetAttribute("type","Splitter");
  root->SetAttribute("is_hand",C_STR(is_hand));
  // Angles list
  assert((int)angles.size() == max_children);
  // Backwards order because we're adding at front
  for(int i = (int)angles.size()-1;i>=0;i--)
  {
    assert(angles[i].size() == 3);
    root->InsertFirstChild(doc.NewElement("angle"))->ToElement()->InsertEndChild(
      doc.NewText(C_STR(angles[i][0]<<" "<<angles[i][1]<<" "<<angles[i][2])));
  }
  return root;
}
开发者ID:alecjacobson,项目名称:puppet,代码行数:21,代码来源:Splitter.cpp

示例5: insertParameterComplexType

void GMCWriter::insertParameterComplexType(GMCDocument * gmc, GMCManagedObject * moc, std::string name,
                                       std::vector< std::pair< std::string, std::string> > values)
{
    vector<GMCManagedObject*> mocsToInsert = gmc->getMocsByClassName(moc->getClassName());
    for ( vector<GMCManagedObject*>::iterator it = mocsToInsert.begin(); it != mocsToInsert.end(); it ++ )
    {
        // Insert to moc
        GMCManagedObject * m = *it;
        vector<GMCManagedObjectParameter*> pars = m->getParameters();

        XMLElement * insertAfter = NULL;
        vector<XMLElement*> elements;

        elements = XmlReader::getElementsWithSpecificNameAndAttributeFromChildrenLevel(m->getElement(), "");

        for ( vector<XMLElement*>::iterator pIt = elements.begin(); pIt != elements.end(); pIt ++ )
        {
            XMLElement * currEl = *pIt;
            string currParName = XmlElementReader::getAttributeByName(currEl, "name");

            if ( XmlElementReader::getName(currEl) < "list" )
                insertAfter = currEl;
            else
            {
                if ( XmlElementReader::getName(currEl) > "list" )
                    break;
                else
                {
                    if ( name < currParName )
                        break;
                    insertAfter = currEl;
                }
            }
        }

        // insert first child
        XMLElement * n = gmc->getXMLDocument()->NewElement("list");
        XMLElement * itemEl = gmc->getXMLDocument()->NewElement("item");
        n->SetAttribute("name", name.c_str());
        n->InsertFirstChild(itemEl);
        for ( std::vector< std::pair< std::string, std::string> > ::iterator pInsertIt = values.begin();
              pInsertIt != values.end(); pInsertIt ++ )
        {
            XMLElement * p = gmc->getXMLDocument()->NewElement("p");
            p->SetAttribute("name", (*pInsertIt).first.c_str());
            p->SetText((*pInsertIt).second.c_str());
            itemEl->InsertEndChild(p);
        }

        if ( insertAfter == NULL )
        {
            XmlWriter::insertChild( m->getElement(), n);
        }
        else
        {
            // insert after
            XmlWriter::insertAfter( insertAfter, n);
        }
    }

}
开发者ID:fzmse,项目名称:FZMSE_UI,代码行数:61,代码来源:gmcwriter.cpp

示例6: dumpSearchResult

bool DividendTuningOptFileRoutines::dumpSearchResult(const std::vector<DividendLWSKernelConf> confs, string& fname)
{
	fname = DIVIDEND_LWS_TUNING_RESULT_PREFIX;

	time_t rawtime;
	struct tm *info;
	char buffer[80];

	time( &rawtime );
	info = localtime( &rawtime );

	strftime(buffer,80,"-%Y%m%dT%H%M%S%z", info);
	fname = fname + buffer;
	fname = fname + ".xml";

	XMLDocument doc;
	doc.InsertEndChild (doc.NewDeclaration() );

	XMLNode *tnode = doc.NewElement( "DIVIDEND" );  
	XMLNode *lnode = doc.NewElement( "LWGS" );  
	XMLNode *kkNode = NULL;

	for (unsigned i=0; i<confs.size(); i++)
	{
		const DividendLWSKernelConf& c = confs[i];
		XMLElement * knode = doc.NewElement( "kernel" );  
		knode->SetAttribute("id", c.kernel_id);
		knode->SetAttribute("dim", c.best.dim);
		knode->SetAttribute("rsize", (unsigned int)c.confs.size());

		XMLNode *pcNode = NULL;

		for (unsigned j=0; j<c.confs.size(); j++)
		{
			const DividendLWSConf& CC = c.confs[j];
			XMLElement * ccnode = doc.NewElement( "config" );
			ccnode->SetAttribute("id", j);
			ccnode->SetAttribute("runtime", (double)CC.time);
			ccnode->SetAttribute("speedup", CC.defaultT / CC.time);
			ccnode->SetAttribute("ci", CC.ci);

			if (pcNode)
			{
				knode->InsertAfterChild(pcNode, ccnode);
			}
			else
			{
				knode->InsertFirstChild(ccnode);
			}

			pcNode = ccnode; 

			XMLElement *ppNode = NULL;
			for (unsigned k=0; k<CC.dim; k++)
			{
				XMLElement *mnode = doc.NewElement ("paramter");
				mnode->SetAttribute("macroname", CC.macroName[k].c_str());
				mnode->SetAttribute("val", CC.val[k]);

				if (ppNode)
				{
					ccnode->InsertAfterChild(ppNode, mnode);
				}
				else
				{
					ccnode->InsertFirstChild(mnode);
				}

				ppNode = mnode; 
			}

		}

		if (kkNode)
		{
			lnode->InsertAfterChild(kkNode, knode);
		}
		else
		{
			lnode->InsertFirstChild(knode);
		}

		kkNode = knode; 
	}
	
	tnode->InsertEndChild(lnode);
	doc.InsertEndChild(tnode);
	
	
	return doc.SaveFile(fname.c_str()) ==  XML_NO_ERROR;
}
开发者ID:zwang4,项目名称:dividend,代码行数:91,代码来源:DividendTuningOptFileRoutines.cpp

示例7: main


//.........这里部分代码省略.........
	{
		static const char* test = "<element>Text before.</element>";
		XMLDocument doc;
		doc.Parse( test );
		XMLElement* root = doc.FirstChildElement();
		XMLElement* newElement = doc.NewElement( "Subelement" );
		root->InsertEndChild( newElement );
		doc.Print();
	}
	{
		XMLDocument* doc = new XMLDocument();
		static const char* test = "<element><sub/></element>";
		doc->Parse( test );
		delete doc;
	}
	{
		// Test: Programmatic DOM
		// Build:
		//		<element>
		//			<!--comment-->
		//			<sub attrib="1" />
		//			<sub attrib="2" />
		//			<sub attrib="3" >& Text!</sub>
		//		<element>

		XMLDocument* doc = new XMLDocument();
		XMLNode* element = doc->InsertEndChild( doc->NewElement( "element" ) );

		XMLElement* sub[3] = { doc->NewElement( "sub" ), doc->NewElement( "sub" ), doc->NewElement( "sub" ) };
		for( int i=0; i<3; ++i ) {
			sub[i]->SetAttribute( "attrib", i );
		}
		element->InsertEndChild( sub[2] );
		XMLNode* comment = element->InsertFirstChild( doc->NewComment( "comment" ) );
		element->InsertAfterChild( comment, sub[0] );
		element->InsertAfterChild( sub[0], sub[1] );
		sub[2]->InsertFirstChild( doc->NewText( "& Text!" ));
		doc->Print();
		XMLTest( "Programmatic DOM", "comment", doc->FirstChildElement( "element" )->FirstChild()->Value() );
		XMLTest( "Programmatic DOM", "0", doc->FirstChildElement( "element" )->FirstChildElement()->Attribute( "attrib" ) );
		XMLTest( "Programmatic DOM", 2, doc->FirstChildElement()->LastChildElement( "sub" )->IntAttribute( "attrib" ) );
		XMLTest( "Programmatic DOM", "& Text!",
				 doc->FirstChildElement()->LastChildElement( "sub" )->FirstChild()->ToText()->Value() );

		// And now deletion:
		element->DeleteChild( sub[2] );
		doc->DeleteNode( comment );

		element->FirstChildElement()->SetAttribute( "attrib", true );
		element->LastChildElement()->DeleteAttribute( "attrib" );

		XMLTest( "Programmatic DOM", true, doc->FirstChildElement()->FirstChildElement()->BoolAttribute( "attrib" ) );
		int value = 10;
		int result = doc->FirstChildElement()->LastChildElement()->QueryIntAttribute( "attrib", &value );
		XMLTest( "Programmatic DOM", result, (int)XML_NO_ATTRIBUTE );
		XMLTest( "Programmatic DOM", value, 10 );

		doc->Print();

		{
			XMLPrinter streamer;
			doc->Print( &streamer );
			printf( "%s", streamer.CStr() );
		}
		{
			XMLPrinter streamer( 0, true );
开发者ID:AlejandorLazaro,项目名称:tinyxml2,代码行数:67,代码来源:xmltest.cpp

示例8: saveOutputXML

bool saveOutputXML(OutputXML *xml, string path) {
	cout << "Salvando..." << endl;
	XMLDocument doc;

	// root node
	XMLNode * testInput = doc.NewElement("testinput");

	// cabe�alho
	XMLElement * dataset = doc.NewElement("dataset");
	dataset->SetAttribute("id", xml->id.c_str());
	testInput->InsertFirstChild(dataset);

	// tempos
	XMLElement * times = doc.NewElement("execution_time");
	for (auto _t : xml->all_times) {
		// ignora esse elemento
		if (_t.first == Task::ALL) continue;

		// calcula a media e desvio padrao
		double m, d;
		Helper::mediaDesvioDouble(_t.second, m, d);

		// adiciona no xml
		XMLElement * time = doc.NewElement("time");
		time->SetAttribute("name", Task::getName(_t.first).c_str());
		time->SetAttribute("mean", m);
		time->SetAttribute("stddev", d);
		times->InsertEndChild(time);
	}
	testInput->InsertEndChild(times);
	
	// frames
	XMLElement * frames = doc.NewElement("frames");
	frames->SetAttribute("n", xml->nFrames);
	for (int i = 0; i < (int)xml->frameNumber.size(); i++) {
		XMLElement * frame = doc.NewElement("frame");

		frame->SetAttribute("id", xml->frameNumber[i]);
		frame->SetAttribute("laneCenter", xml->laneCenter[i]);
		frame->SetAttribute("laneChange", xml->laneChange[i]);
		frame->SetAttribute("laneLeft", xml->multipleLanes.left[i]);
		frame->SetAttribute("laneRight", xml->multipleLanes.right[i]);
		frame->SetAttribute("lmtLeft", xml->lmt.left[i]);
		frame->SetAttribute("lmtRight", xml->lmt.right[i]);
		string roadSigns = "";
		for (unsigned int j = 0; j < xml->roadSigns[i].size(); j++) {
			roadSigns += to_string(xml->roadSigns[i][j]);
			if (j != xml->roadSigns[i].size() - 1) roadSigns += ";";
		}
		frame->SetAttribute("roadSigns", roadSigns.c_str());
		frame->SetAttribute("time", xml->time[i]);

		XMLElement * position = doc.NewElement("position");
		XMLElement * posLeft = doc.NewElement("left");
		XMLElement * p1left = doc.NewElement("p1");
		XMLElement * p2left = doc.NewElement("p2");
		XMLElement * p3left = doc.NewElement("p3");
		XMLElement * p4left = doc.NewElement("p4");
		if (std::isnan(xml->position.left[i][0])) p1left->SetText("nan");
		else p1left->SetText(xml->position.left[i][0]);
		if (std::isnan(xml->position.left[i][1])) p2left->SetText("nan");
		else p2left->SetText(xml->position.left[i][1]);
		if (std::isnan(xml->position.left[i][2])) p3left->SetText("nan");
		else p3left->SetText(xml->position.left[i][2]);
		if (std::isnan(xml->position.left[i][3])) p4left->SetText("nan");
		else p4left->SetText(xml->position.left[i][3]);

		XMLElement * posRight = doc.NewElement("right");
		XMLElement * p1right = doc.NewElement("p1");
		XMLElement * p2right = doc.NewElement("p2");
		XMLElement * p3right = doc.NewElement("p3");
		XMLElement * p4right = doc.NewElement("p4");
		if (std::isnan(xml->position.right[i][0])) p1right->SetText("nan");
		else p1right->SetText(xml->position.right[i][0]);
		if (std::isnan(xml->position.right[i][1])) p2right->SetText("nan");
		else p2right->SetText(xml->position.right[i][1]);
		if (std::isnan(xml->position.right[i][2])) p3right->SetText("nan");
		else p3right->SetText(xml->position.right[i][2]);
		if (std::isnan(xml->position.right[i][3])) p4right->SetText("nan");
		else p4right->SetText(xml->position.right[i][3]);

		// insert the elements
		posLeft->InsertEndChild(p1left);
		posLeft->InsertEndChild(p2left);
		posLeft->InsertEndChild(p3left);
		posLeft->InsertEndChild(p4left);

		posRight->InsertEndChild(p1right);
		posRight->InsertEndChild(p2right);
		posRight->InsertEndChild(p3right);
		posRight->InsertEndChild(p4right);

		position->InsertFirstChild(posLeft);
		position->InsertEndChild(posRight);

		frame->InsertFirstChild(position);

		frames->InsertEndChild(frame);
	}
	testInput->InsertEndChild(frames);
//.........这里部分代码省略.........
开发者ID:LCAD-UFES,项目名称:carmen_lcad,代码行数:101,代码来源:HelperXML.cpp


注:本文中的XMLElement::InsertFirstChild方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。