本文整理汇总了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;
}
示例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);
}
示例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);
}
}
示例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;
}
示例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);
}
}
}
示例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;
}
示例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 );
示例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);
//.........这里部分代码省略.........