本文整理汇总了C++中XMLElement::InsertAfterChild方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLElement::InsertAfterChild方法的具体用法?C++ XMLElement::InsertAfterChild怎么用?C++ XMLElement::InsertAfterChild使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLElement
的用法示例。
在下文中一共展示了XMLElement::InsertAfterChild方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: moveDictItem
void Configure::moveDictItem(int index, bool down)
{
int newindex = down ? index + 1 : index - 1;
if (newindex < 0 || newindex >= m_dictNodes.size()) {
g_sysLog(LOG_ERROR, "{Configure} move to a invalid row(%d)\n", newindex);
return;
}
struct DictNode tempNode = m_dictNodes[index];
m_dictNodes[index] = m_dictNodes[newindex];
m_dictNodes[newindex] = tempNode;
// writeDictItem(index);
// writeDictItem(newindex);
SpinLock lock(m_cs);
int afterThis, addThis, max;
if (down) {
afterThis = newindex;
addThis = index;
max = newindex;
} else {
afterThis = index;
addThis = newindex;
max = index;
}
XMLElement* dictElement = XMLHandle(m_doc.RootElement()).FirstChildElement("dict").ToElement();
XMLElement* e = dictElement->FirstChildElement();
XMLElement* afterThisElement = NULL;
XMLElement* addThisElement = NULL;
for (int i=0; i<=max; i++) {
if (i == afterThis)
afterThisElement = e;
else if (i == addThis)
addThisElement = e;
e = e->NextSiblingElement();
}
dictElement->InsertAfterChild(afterThisElement, addThisElement);
m_dirty = true;
}
示例2: 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 );
doc->Print( &streamer );
示例3: 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, XML_NO_ATTRIBUTE );
XMLTest( "Programmatic DOM", value, 10 );
doc->Print();
XMLPrinter streamer;
doc->Print( &streamer );
printf( "%s", streamer.CStr() );
delete doc;
}
{
// Test: Dream
示例4: 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;
}