本文整理汇总了C++中XMLDocument::FirstChild方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLDocument::FirstChild方法的具体用法?C++ XMLDocument::FirstChild怎么用?C++ XMLDocument::FirstChild使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLDocument
的用法示例。
在下文中一共展示了XMLDocument::FirstChild方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parseConfiguration
void BirdConfiguration::parseConfiguration(string number) {
using namespace tinyxml2;
XMLDocument configurationDoc;
configurationDoc.LoadFile(file_path.c_str());
XMLElement* element;
XMLNode* node;
XMLNode* rootNode = configurationDoc.FirstChild();
node=rootNode;
(*this)["Predator"] = "false";
(*this)["Number"] = number;
element = node->FirstChildElement();
string elm_str;
while(element){
elm_str =element->GetText();
elm_str.erase(std::remove_if(elm_str.begin(),
elm_str.end(),
[](char x){return isspace(x);}),
elm_str.end());
(*this)[element->Name()] = elm_str;
element=element->NextSiblingElement();
}
}
示例2: data
model::describe_snapshots_response::describe_snapshots_response(const string &xml_doc)
{
XMLDocument doc;
doc.Parse(xml_doc.c_str());
//Root
XMLNode *RootNode = doc.FirstChild();
XMLElement *Element = RootNode->FirstChildElement("requestId");
if(Element!=NULL)
{
request_id = Element->GetText();
Element=Element->NextSiblingElement();
}
else cout<<"Error Parsing Request ID from XML describe_snapshots_response\n";
XMLElement *ListElement = Element->FirstChildElement("item");
XMLElement *SnapshotElement;
string status, snapshot_id, start_time, volume_id;
float volume_size;
while(ListElement != NULL)
{
SnapshotElement = ListElement->FirstChildElement("status");
if(SnapshotElement!=NULL)
{
status = SnapshotElement->GetText();
SnapshotElement = SnapshotElement->NextSiblingElement();
}
else cout<<"Error Parsing status from XML describe_snapshots_response\n";
if(SnapshotElement!=NULL)
{
snapshot_id = SnapshotElement->GetText();
SnapshotElement=SnapshotElement->NextSiblingElement();
}
else cout<<"Error Parsing snapshot_id from XML describe_snapshots_response\n";
if(SnapshotElement!=NULL)
{
SnapshotElement->QueryFloatText(&volume_size);
SnapshotElement=SnapshotElement->NextSiblingElement();
}
else cout<<"Error Parsing volume_size from XML describe_snapshots_response\n";
if(SnapshotElement!=NULL)
{
volume_id=SnapshotElement->GetText();
SnapshotElement=SnapshotElement->NextSiblingElement();
}
else cout<<"Error Parsing volume_id from XML describe_snapshots_response\n";
if(SnapshotElement!=NULL)
if(SnapshotElement->GetText()!=NULL) start_time = SnapshotElement->GetText();
else cout<<"Error Parsing start_time from XML describe_snapshots_response\n";
//add to map
model::snapshot data(status,snapshot_id,volume_size,volume_id,start_time);
snapshot_set.push_back(data);
ListElement=ListElement->NextSiblingElement();
}
}
示例3:
model::delete_snapshot_response::delete_snapshot_response(const string &xml_doc):result(false)
{
XMLDocument doc;
doc.Parse(xml_doc.c_str());
//Root
const XMLNode *RootNode = doc.FirstChild();
if (RootNode) {
set_string_value(RootNode, "requestId", request_id);
set_bool_value(RootNode, "return", result);
}
}
示例4: readXMLDoc
TestData readXMLDoc() {
XMLDocument doc;
#ifdef WIN32
XMLCheckResult(doc.LoadFile("../../test/mpw_tests.xml"));
#else
XMLCheckResult(doc.LoadFile("mpw_tests.xml"));
#endif
TestData data;
XMLNode * pRoot = doc.FirstChild();
if (pRoot == 0) return data;
XMLElement * pListElement = pRoot->FirstChildElement("case");
TestData testData;
while (pListElement != 0) {
//We have a test case. Allocate memory for it.
TestCase testCase;
//Get the ID of this case
std::string id = pListElement->Attribute("id");
std::cout << "ID: " << id << std::endl;
//Now check if we have a parent.
const char* pParent = pListElement->Attribute("parent");
if (pParent) {
testCase = testData.at(pParent);
}
//Now fill in the data from this node.
XMLElement * pNodeListElement = pListElement->FirstChildElement();
while (pNodeListElement != 0) {
const char* name = pNodeListElement->Name();
const char* value = pNodeListElement->GetText();
if (value != 0) {
testCase[name] = value;
std::cout << name << ": " << testCase[name] << std::endl;
}
else {
testCase[name] = "";
std::cout << name << ": " << "null" << std::endl;
}
pNodeListElement = pNodeListElement->NextSiblingElement();
}
testData[id] = testCase;
pListElement = pListElement->NextSiblingElement("case");
}
return testData;
}
示例5:
model::delete_snapshot_response::delete_snapshot_response(const string &xml_doc)
{
XMLDocument doc;
doc.Parse(xml_doc.c_str());
//Root
XMLNode *RootNode = doc.FirstChild();
XMLElement *Element = RootNode->FirstChildElement("requestId");
if(Element!=NULL)
{ if(Element->GetText()!=NULL)request_id = Element->GetText();
Element=Element->NextSiblingElement();
}
else cout<<"Error Parsing request_id from XML delete_snapshot_response\n";
if(Element!=NULL)
Element->QueryBoolText(&result);
else cout<<"Error Parsing result from XML delete_snapshot_response\n";
}
示例6: data
model::describe_volumes_response::describe_volumes_response(const string &xml_doc)
{
XMLDocument doc;
doc.Parse(xml_doc.c_str());
//Root
const XMLNode *RootNode = doc.FirstChild();
if (RootNode) {
set_string_value(RootNode, "requestId", request_id);
const XMLElement * Element = RootNode->FirstChildElement("volumeSet");
const XMLElement * ListElement = NULL;
if (Element)
ListElement = Element->FirstChildElement("item");
while(ListElement != NULL)
{
string status,volume_id, device, instance_id, snapshot_id,create_time;
bool encrypted = false;
string volume_type;
float size;
set_string_value(ListElement, "status", status);
set_string_value(ListElement, "volumeId", volume_id);
//Attachment set
const XMLElement* attachment = ListElement->FirstChildElement("attachmentSet");
if (attachment) {
const XMLElement* items = attachment->FirstChildElement("item");
if (items) {
set_string_value(items, "device", device);
set_string_value(items, "instanceId", instance_id);
}
}
set_string_value(ListElement, "snapshotId", snapshot_id);
set_string_value(ListElement, "createTime", create_time);
set_float_value(ListElement, "size", size);
set_bool_value(ListElement, "encrypted", encrypted);
model::volume data(status, volume_id, device, instance_id, snapshot_id, create_time, size, encrypted, volume_type);
volume_set.push_back(data);
ListElement=ListElement->NextSiblingElement();
}
}
}
示例7: data
model::describe_instance_types_response::describe_instance_types_response(const string &xml_doc)
{
XMLDocument doc;
doc.Parse(xml_doc.c_str());
//Root
XMLNode *RootNode = doc.FirstChild();
XMLElement *Element = RootNode->FirstChildElement("requestId");
if(Element!=NULL)
{
if(Element->GetText()!=NULL) request_id = Element->GetText();
Element=Element->NextSiblingElement();
}
else cout<<"Error Parsing request_id from XML describe_instance_types_response\n";
XMLElement *InstanceTypeElement,*ListElement = Element->FirstChildElement("item");
float vcpus,ram;
string id;
while(ListElement != NULL)
{
InstanceTypeElement = ListElement->FirstChildElement("vcpus");
if(InstanceTypeElement!=NULL)
{
InstanceTypeElement->QueryFloatText(&vcpus);
InstanceTypeElement = InstanceTypeElement->NextSiblingElement();
}
else cout<<"Error Parsing VCPUS from XML describe_instance_types_response\n";
if(InstanceTypeElement!=NULL)
{
InstanceTypeElement->QueryFloatText(&ram);
InstanceTypeElement = InstanceTypeElement->NextSiblingElement();
}
else cout<<"Error Parsing RAM data from XML describe_instance_types_response\n";
if(InstanceTypeElement!=NULL)
{if(InstanceTypeElement->GetText() != NULL)id = InstanceTypeElement->GetText();}
else cout<<"Error Parsing instance_id from XML describe_instance_types_response\n";
//Add to map
model::instance_type data(vcpus, ram, id);
instance_type_set.push_back(data);
ListElement=ListElement->NextSiblingElement();
}
}
示例8: data
model::start_instances_response::start_instances_response(const string &xml_doc)
{
XMLDocument doc;
doc.Parse(xml_doc.c_str());
//Root
XMLNode *RootNode = doc.FirstChild();
XMLElement *Element = RootNode->FirstChildElement("requestId");
if(Element!= NULL)
{
if(Element->GetText() != NULL)request_id = Element->GetText();
Element = Element->NextSiblingElement();
}
XMLElement *ListElement = Element->FirstChildElement("item");
XMLElement *InstanceSetElement;
string instance_id, current_state, previous_state;
while(ListElement != NULL)
{
InstanceSetElement = ListElement->FirstChildElement("instanceId");
if(InstanceSetElement!=NULL)
{
if(InstanceSetElement->GetText()!=NULL)instance_id = InstanceSetElement->GetText();
InstanceSetElement=InstanceSetElement->NextSiblingElement();
}
else cout<<"Error Parsing instance_id from start_instances_response";
if(InstanceSetElement!=NULL)
{
current_state = InstanceSetElement->GetText();
InstanceSetElement=InstanceSetElement->NextSiblingElement();
}
else cout<<"Error Parsing current_state from XMl start_instances_response";
if(InstanceSetElement!=NULL)
{if(InstanceSetElement->GetText()!=NULL)previous_state = InstanceSetElement->GetText();}
else cout<<"Error Parsing previous_state from XML start_instances_response";
//Add to the map;
model::instance_set data(instance_id, current_state, previous_state);
instances.push_back(data);
ListElement=ListElement->NextSiblingElement();
}
}
示例9: main
int main(int argc, char **argv)
{
string line = "";
if (argc == 1) {
cout << "Enter file location: " << std::endl;
while (line == "")
getline(cin, line);
}
XMLDocument document;
document.LoadFile(argc > 1 ? argv[1] : line.c_str());
if (document.ErrorID() > 0)
return document.ErrorID();
else {
document.Parse(line.c_str());
auto element = document.FirstChild();
int a =0;
}
}
示例10: debugf
void emu::Settings::Load(char const * filename)
{
XMLDocument xmlDoc;
XMLError eResult = xmlDoc.LoadFile(filename);
if (eResult != XML_SUCCESS)
{
//something went wrong with loading create a default one
debugf(emu, "Can't load pspe4all.xml .Creating adefault one");
CreateDefaultXml(filename);
return;
}
XMLNode * pRoot = xmlDoc.FirstChild();
XMLElement * pElement = pRoot->FirstChildElement("GeneralSettings");
XMLElement * pListElement = pElement->FirstChildElement("CpuMode");
cpumode = pListElement->GetText();
pListElement = pListElement->NextSiblingElement("GeRenderer");
gerenderer = pListElement->GetText();
debugf(emu, "Loaded %s from pspe4all.xml", cpumode.c_str());
debugf(emu, "Loaded %s from pspe4all.xml", gerenderer.c_str());
}
示例11: key
model::describe_key_pairs_response::describe_key_pairs_response(const string &xml_doc)
{
XMLDocument doc;
doc.Parse(xml_doc.c_str());
//Root
const XMLNode *RootNode = doc.FirstChild();
if (RootNode) {
set_string_value(RootNode, "requestId", request_id);
const XMLElement *KeySet = RootNode->FirstChildElement("keySet");
if (KeySet) {
const XMLElement *ListElement = KeySet->FirstChildElement("item");
while(ListElement)
{
string keyname,keyfingerprint;
set_string_value(ListElement, "keyName", keyname);
set_string_value(ListElement, "keyFingerprint", keyfingerprint);
model::key_pair key(keyname,keyfingerprint);
key_pairs.push_back(key);
ListElement=ListElement->NextSiblingElement();
}
}
}
}
示例12: main
int main( int argc, const char ** argv )
{
#if defined( _MSC_VER ) && defined( DEBUG )
_CrtMemCheckpoint( &startMemState );
#endif
#if defined(_MSC_VER) || defined(MINGW32) || defined(__MINGW32__)
#if defined __MINGW64_VERSION_MAJOR && defined __MINGW64_VERSION_MINOR
//MINGW64: both 32 and 64-bit
mkdir( "resources/out/" );
#else
_mkdir( "resources/out/" );
#endif
#else
mkdir( "resources/out/", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
#endif
if ( argc > 1 ) {
XMLDocument* doc = new XMLDocument();
clock_t startTime = clock();
doc->LoadFile( argv[1] );
clock_t loadTime = clock();
int errorID = doc->ErrorID();
delete doc; doc = 0;
clock_t deleteTime = clock();
printf( "Test file '%s' loaded. ErrorID=%d\n", argv[1], errorID );
if ( !errorID ) {
printf( "Load time=%u\n", (unsigned)(loadTime - startTime) );
printf( "Delete time=%u\n", (unsigned)(deleteTime - loadTime) );
printf( "Total time=%u\n", (unsigned)(deleteTime - startTime) );
}
exit(0);
}
FILE* fp = fopen( "resources/dream.xml", "r" );
if ( !fp ) {
printf( "Error opening test file 'dream.xml'.\n"
"Is your working directory the same as where \n"
"the xmltest.cpp and dream.xml file are?\n\n"
#if defined( _MSC_VER )
"In windows Visual Studio you may need to set\n"
"Properties->Debugging->Working Directory to '..'\n"
#endif
);
exit( 1 );
}
fclose( fp );
XMLTest( "Example-1", 0, example_1() );
XMLTest( "Example-2", 0, example_2() );
XMLTest( "Example-3", 0, example_3() );
XMLTest( "Example-4", true, example_4() );
/* ------ Example 2: Lookup information. ---- */
{
static const char* test[] = { "<element />",
"<element></element>",
"<element><subelement/></element>",
"<element><subelement></subelement></element>",
"<element><subelement><subsub/></subelement></element>",
"<!--comment beside elements--><element><subelement></subelement></element>",
"<!--comment beside elements, this time with spaces--> \n <element> <subelement> \n </subelement> </element>",
"<element attrib1='foo' attrib2=\"bar\" ></element>",
"<element attrib1='foo' attrib2=\"bar\" ><subelement attrib3='yeehaa' /></element>",
"<element>Text inside element.</element>",
"<element><b></b></element>",
"<element>Text inside and <b>bolded</b> in the element.</element>",
"<outer><element>Text inside and <b>bolded</b> in the element.</element></outer>",
"<element>This & That.</element>",
"<element attrib='This<That' />",
0
};
for( int i=0; test[i]; ++i ) {
XMLDocument doc;
doc.Parse( test[i] );
doc.Print();
printf( "----------------------------------------------\n" );
}
}
#if 1
{
static const char* test = "<!--hello world\n"
" line 2\r"
" line 3\r\n"
" line 4\n\r"
" line 5\r-->";
XMLDocument doc;
doc.Parse( test );
doc.Print();
}
{
static const char* test = "<element>Text before.</element>";
XMLDocument doc;
doc.Parse( test );
XMLElement* root = doc.FirstChildElement();
XMLElement* newElement = doc.NewElement( "Subelement" );
//.........这里部分代码省略.........
示例13: main
int main( int /*argc*/, const char ** /*argv*/ )
{
#if defined( _MSC_VER ) && defined( DEBUG )
_CrtMemCheckpoint( &startMemState );
#endif
#if defined(_MSC_VER)
#pragma warning ( push )
#pragma warning ( disable : 4996 ) // Fail to see a compelling reason why this should be deprecated.
#endif
FILE* fp = fopen( "dream.xml", "r" );
if ( !fp ) {
printf( "Error opening test file 'dream.xml'.\n"
"Is your working directory the same as where \n"
"the xmltest.cpp and dream.xml file are?\n\n"
#if defined( _MSC_VER )
"In windows Visual Studio you may need to set\n"
"Properties->Debugging->Working Directory to '..'\n"
#endif
);
exit( 1 );
}
fclose( fp );
#if defined(_MSC_VER)
#pragma warning ( pop )
#endif
/* ------ Example 1: Load and parse an XML file. ---- */
{
XMLDocument doc;
doc.LoadFile( "dream.xml" );
}
/* ------ Example 2: Lookup information. ---- */
{
XMLDocument doc;
doc.LoadFile( "dream.xml" );
// Structure of the XML file:
// - Element "PLAY" the root Element
// - - Element "TITLE" child of the root PLAY Element
// - - - Text child of the TITLE Element
// Navigate to the title, using the convenience function, with a dangerous lack of error checking.
const char* title = doc.FirstChildElement( "PLAY" )->FirstChildElement( "TITLE" )->GetText();
printf( "Name of play (1): %s\n", title );
// Text is just another Node to TinyXML-2. The more general way to get to the XMLText:
XMLText* textNode = doc.FirstChildElement( "PLAY" )->FirstChildElement( "TITLE" )->FirstChild()->ToText();
title = textNode->Value();
printf( "Name of play (2): %s\n", title );
}
{
static const char* test[] = { "<element />",
"<element></element>",
"<element><subelement/></element>",
"<element><subelement></subelement></element>",
"<element><subelement><subsub/></subelement></element>",
"<!--comment beside elements--><element><subelement></subelement></element>",
"<!--comment beside elements, this time with spaces--> \n <element> <subelement> \n </subelement> </element>",
"<element attrib1='foo' attrib2=\"bar\" ></element>",
"<element attrib1='foo' attrib2=\"bar\" ><subelement attrib3='yeehaa' /></element>",
"<element>Text inside element.</element>",
"<element><b></b></element>",
"<element>Text inside and <b>bolded</b> in the element.</element>",
"<outer><element>Text inside and <b>bolded</b> in the element.</element></outer>",
"<element>This & That.</element>",
"<element attrib='This<That' />",
0
};
for( int i=0; test[i]; ++i ) {
XMLDocument doc;
doc.Parse( test[i] );
doc.Print();
printf( "----------------------------------------------\n" );
}
}
#if 1
{
static const char* test = "<!--hello world\n"
" line 2\r"
" line 3\r\n"
" line 4\n\r"
" line 5\r-->";
XMLDocument doc;
doc.Parse( test );
doc.Print();
}
{
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 );
//.........这里部分代码省略.........
示例14: fopen
PluginChipFactory::PluginChipFactory()
{
XMLDocument doc;
FILE * f = fopen("atanua.xml", "rb");
if (doc.LoadFile(f))
{
fclose(f);
return;
}
fclose(f);
// Load config
XMLNode *root;
for (root = doc.FirstChild(); root != 0; root = root->NextSibling())
{
if (root->ToElement())
{
if (stricmp(root->Value(), "AtanuaConfig")==0)
{
XMLNode *part;
for (part = root->FirstChild(); part != 0; part = part->NextSibling())
{
if (part->ToElement())
{
if (stricmp(part->Value(), "Plugin") == 0)
{
const char *dll = ((XMLElement*)part)->Attribute("dll");
DLLHANDLETYPE h = opendll(dll);
if (h)
{
getatanuadllinfoproc getdllinfo = (getatanuadllinfoproc)getdllproc(h, "getatanuadllinfo");
if (getdllinfo)
{
atanuadllinfo *dllinfo = new atanuadllinfo;
getdllinfo(dllinfo);
if (dllinfo->mDllVersion <= ATANUA_PLUGIN_DLL_VERSION)
{
mDllInfo.push_back(dllinfo);
mDllHandle.push_back(h);
}
else
{
char temp[512];
sprintf(temp, "Plug-in \"%s\" version is incompatible \n"
"with the current version of Atanua.\n"
"\n"
"Try to use it anyway?", dll);
if (okcancel(temp))
{
mDllInfo.push_back(dllinfo);
mDllHandle.push_back(h);
}
}
}
}
}
}
}
}
}
}
}
示例15: main
int main()
{
// CURL* curl; //our curl object
//
// struct BufferStruct output; // Create an instance of out BufferStruct to accept LCs output
// output.buffer = NULL;
// output.size = 0;
//
// curl_global_init(CURL_GLOBAL_ALL); //pretty obvious
// curl = curl_easy_init();
//
// curl_easy_setopt(curl, CURLOPT_URL, "http://www.findyourfate.com/rss/horoscope-astrology-feed.asp?mode=view&todate=8/20/2015");
// curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &WriteMemoryCallback);
// curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&output);
// curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); //tell curl to output its progress
//
// curl_easy_perform(curl);
// curl_easy_cleanup(curl);
//
// FILE * fp;
// fp = fopen( "example.xml","w");
// cout<<"HEILL!";
// if( !fp )
// return 1;
// fprintf(fp, output.buffer );
// fclose( fp );
//
// if( output.buffer )
// {
// free ( output.buffer );
// output.buffer = 0;
// output.size = 0;
// }
//
// cin.get();
XMLDocument doc;
doc.LoadFile("example.xml");
cout<< "ERROR ID: "<<doc.ErrorName()<<endl;
XMLNode * pRoot = doc.FirstChild();
if (pRoot ==NULL)
cout<<"ERROR!!!"<<endl;
XMLNode* SiblingNode = pRoot->NextSibling();
XMLNode* ChildNode = SiblingNode->FirstChild();
XMLElement *ChildElmt = ChildNode->ToElement();
string strTagName = ChildElmt->Name();
cout<<strTagName<<endl;
XMLNode* Child_2_Node = ChildNode->FirstChild();
XMLElement *Child_2_NodeElmt = Child_2_Node->ToElement();
strTagName = Child_2_NodeElmt->Name();
cout<<strTagName<<endl;
strTagName = Child_2_NodeElmt->GetText();
cout<<strTagName<<endl;
XMLNode* secSibling = Child_2_Node->NextSibling();
XMLElement *Sib_2_NodeElmt = secSibling->ToElement();
strTagName = Sib_2_NodeElmt->Name();
cout<<strTagName<<endl;
strTagName = Sib_2_NodeElmt->GetText();
cout<<strTagName<<endl;
//XMLElement* pElement = pRoot->ToElement();
//if (pElement ==NULL)
// cout<<"ERROR"<<endl;
// XMLElement * pElement = pRoot->FirstChildElement("rss")->FirstChildElement("channel");
// if (pElement ==NULL)
// cout<<"ERROR"<<endl;
// if (pElement ==NULL)
// cout<<"ERROR"<<endl;
// const char* title = pElement->GetText();
// printf( "Name of play (1): %s\n", title );
// cout << endl << pElement->GetText() << endl;
//cin.get();
//curl_global_cleanup();
return 0;
}