本文整理汇总了C++中XMLDocument类的典型用法代码示例。如果您正苦于以下问题:C++ XMLDocument类的具体用法?C++ XMLDocument怎么用?C++ XMLDocument使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了XMLDocument类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TEST
TEST(XML_READER, getFirstChild)
{
XMLDocument * doc = XmlWrapper::loadDocument("UT/TestFiles/PDDB/test_pddb_1.xml");
XmlReader * reader = new XmlReader(doc);
XMLElement* doc_element;
std::string tag = "";
reader->goFirstChild();
reader->goFirstChild();
doc_element = doc->FirstChildElement();
doc_element = doc_element->FirstChildElement();
std::string a = XmlElementReader::getName(reader->getFirstChild(tag));
std::string b = XmlElementReader::getName(doc_element).c_str();
EXPECT_EQ(a, b);
delete reader;
delete doc;
}
示例2: parse
bool Triggers::parse() {
XMLDocument doc;
if (doc.LoadFile(mXmlFile.c_str())) {
doc.PrintError();
return false;
}
const XMLElement* root = doc.FirstChildElement("triggers");
if (! root)
return false;
const XMLElement* runs = root->FirstChildElement("runs");
for (; runs; runs = runs->NextSiblingElement("runs")) {
parseRunsElement(runs);
}
return true;
}
示例3: write
void FileList::write() {
XMLDocument doc;
{
XMLElement* filelist = doc.NewElement("filelist");
filelist->SetAttribute("application", "video-organizer");
filelist->SetAttribute("version", "1.0");
for (unsigned i = 0; i < records.size(); i++) {
XMLElement* record = doc.NewElement("record");
record->SetAttribute("from", records[i].from.c_str());
record->SetAttribute("to", records[i].to.c_str());
record->SetAttribute("action", records[i].action);
filelist->InsertEndChild(record);
}
doc.InsertEndChild(filelist);
}
XMLError ret = doc.SaveFile((dir + "filelist").c_str());
if (ret) console.e("Error writing filelist: %s", ret);
}
示例4: rss_feed_parse
void rss_feed_parse(const std::string &feed)
{
XMLDocument doc;
doc.Parse(feed.c_str());
XMLElement *rss = doc.FirstChildElement("rss");
if (rss) {
XMLElement *channel = rss->FirstChildElement("channel");
if (channel) {
for (XMLElement *article = channel->FirstChildElement("item"); article; article = article->NextSiblingElement("item")) {
XMLElement *title = article->FirstChildElement("title");
XMLElement *link = article->FirstChildElement("link");
std::cout << title->GetText() << std::endl;
std::cout << link->GetText() << std::endl;
std::cout << std::endl;
}
}
}
}
示例5: readSpecs
int SPECAPIENTRY readSpecs(const char* xmlData, unsigned int bytes,
Function** functions, unsigned int* functionCount,
Constant** constants, unsigned int* constantsCount)
{
XMLDocument document;
if (document.Parse(xmlData, bytes) == XMLError::XML_NO_ERROR)
{
XMLElement* registry = document.FirstChildElement("registry");
if (registry)
{
ObtainConstants(registry, constantsCount, constants);
ObtainCommands(registry, functionCount, functions);
ObtainFeatures(registry, functionCount, functions);
ObtainExtensions(registry, functionCount, functions);
}
}
return 0;
}
示例6: addPluginByXML
void pluginManager::addPluginByXML(const char* name)
{
//fprintf(stderr,"[DEBUG] addPluginByXML(%s)\n",name);
XMLDocument doc;
doc.LoadFile(name);
// TODO add exception handle here
const char* libName = doc.FirstChildElement("libname")->GetText();
const char* funcName = doc.FirstChildElement("funcname")->GetText();
const char* freqs = doc.FirstChildElement("freq")->GetText();
int sleepInterval = atoi(freqs);
struct arguments A;
A.iv = sleepInterval;
addPlugin(libName ,funcName ,A);
}
示例7: apply_style
// Only public function of the module
void apply_style(XMLDocument const & xml, XMLDocument const & xsl,
std::ostream & out, std::ostream & err)
{
if (Validator(*xsl.root(), err)())
{
Document xsl_doc(xsl);
xsl_doc.apply_style_to(xml, out);
}
}
示例8: xmlParse
void TR_svtImp::xmlParse(const string &set, vector< Ptr<Object> > &out)
{
XMLDocument doc;
doc.LoadFile(set.c_str());
XMLElement *root_ = doc.RootElement();
string rootElem(root_->Name());
if (rootElem == "tagset")
{
string strImage("image");
XMLElement *child = root_->FirstChildElement(strImage.c_str());
while (child)
{
string imageName = child->FirstChildElement("imageName")->GetText();
string lex = child->FirstChildElement("lex")->GetText();
Ptr<TR_svtObj> curr(new TR_svtObj);
curr->fileName = imageName;
split(lex, curr->lex, ',');
XMLElement *childTaggeds = child->FirstChildElement("taggedRectangles");
if (childTaggeds)
{
string strTagged("taggedRectangle");
XMLElement *childTagged = childTaggeds->FirstChildElement(strTagged.c_str());
while (childTagged)
{
tag t;
t.value = childTagged->FirstChildElement("tag")->GetText();
t.height = atoi(childTagged->Attribute("height"));
t.width = atoi(childTagged->Attribute("width"));
t.x = atoi(childTagged->Attribute("x"));
t.y = atoi(childTagged->Attribute("y"));
curr->tags.push_back(t);
childTagged = childTagged->NextSiblingElement(strTagged.c_str());
}
}
out.push_back(curr);
child = child->NextSiblingElement(strImage.c_str());
}
}
}
示例9: loadDatasetConfig
bool loadDatasetConfig(const string &filepath, ConfigXML &outConfigXML) {
cout << "Carregando ConfigXML... ";
// se houver problemas para abrir o arquivo, retorna false
XMLDocument doc;
XMLError error = doc.LoadFile(filepath.c_str());
if (error != XML_NO_ERROR) {
cout << "erro!" << endl;
return false;
}
// pega as configs do m�todo
XMLElement* configTag = doc.FirstChildElement("config");
outConfigXML.verbose = (strcmp(configTag->FirstChildElement("verbose")->GetText(), "true") == 0);
outConfigXML.display = (strcmp(configTag->FirstChildElement("display_images")->GetText(), "true") == 0);
outConfigXML.numParticles = configTag->FirstChildElement("particle_filter")->IntAttribute("num");
// pega as configs do dataset
XMLElement* dataset = doc.FirstChildElement()->FirstChildElement("dataset");
outConfigXML.dataset.id = dataset->Attribute("id");
outConfigXML.dataset.name = dataset->Attribute("name");
outConfigXML.dataset.path = dataset->Attribute("path");
outConfigXML.dataset.FrameSequence.start = dataset->FirstChildElement("frame_sequence")->IntAttribute("start");
outConfigXML.dataset.FrameSequence.end = dataset->FirstChildElement("frame_sequence")->IntAttribute("end");
outConfigXML.dataset.FrameSize.width = dataset->FirstChildElement("frame_size")->IntAttribute("width");
outConfigXML.dataset.FrameSize.height = dataset->FirstChildElement("frame_size")->IntAttribute("height");
outConfigXML.dataset._ROI.x = dataset->FirstChildElement("region_of_interest")->IntAttribute("x");
outConfigXML.dataset._ROI.y = dataset->FirstChildElement("region_of_interest")->IntAttribute("y");
outConfigXML.dataset._ROI.width = dataset->FirstChildElement("region_of_interest")->IntAttribute("width");
outConfigXML.dataset._ROI.height = dataset->FirstChildElement("region_of_interest")->IntAttribute("height");
outConfigXML.dataset._IPM.tr = dataset->FirstChildElement("ipm_points")->IntAttribute("top_right");
outConfigXML.dataset._IPM.tl = dataset->FirstChildElement("ipm_points")->IntAttribute("top_left");
outConfigXML.dataset._IPM.br = dataset->FirstChildElement("ipm_points")->IntAttribute("bottom_right");
outConfigXML.dataset._IPM.bl = dataset->FirstChildElement("ipm_points")->IntAttribute("bottom_left");
// Constr�i o ipm e a roi
setROI(outConfigXML);
setIPM(outConfigXML);
cout << "pronto!" << endl;
return true;
}
示例10: 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();
}
}
}
示例11: loadMap
bool TiledMap::loadMap(string source)
{
XMLDocument map;
map.LoadFile(source.data());
XMLElement* map_info = map.FirstChildElement("map");
this->version = map_info->Attribute("version");
this->orientation = map_info->Attribute("orientation");
this->width = this->stringToInt(map_info->Attribute("width"));
this->height = this->stringToInt(map_info->Attribute("height"));
this->tilewidth = this->stringToInt(map_info->Attribute("tilewidth"));
this->tileheight = this->stringToInt(map_info->Attribute("tileheight"));
this->loadTilesets(&map);
this->loadLayers(&map);
this->loadObjectGroups(&map);
}
示例12: 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();
}
}
示例13: compareWithStorageFile
set<string> compareWithStorageFile(const string& path) {
map<string, time_t> storage;
XMLDocument doc;
if (doc.LoadFile(gStorage.c_str())!=XML_NO_ERROR) {
cerr << "Error reading XML!" << endl;
doc.PrintError();
}
auto root = doc.FirstChildElement();
auto file = root->FirstChildElement();
while (file) {
string name = file->FirstAttribute()->Value();
auto time = file->Attribute("last_modif");
storage[name] = stoll(time);
file = file->NextSiblingElement();
}
set<string> dst;
fs::path current(path);
fs::recursive_directory_iterator end;
cout << "Go to directory iterator: " << current.string() << " -> " << endl;
for (fs::recursive_directory_iterator item(current); item != end; ++item) {
if (!fs::is_directory(item->status())) {
fs::path filename = item->path();
time_t time = fs::last_write_time(filename);
auto sfile = filename.string().substr(current.string().size());
if (storage.count(sfile)>0) {
if (storage[sfile]!=time) {
dst.insert(sfile);
cout << "[mod] " << sfile << endl;
}
}
else {
dst.insert(sfile);
cout << "[new] " << sfile << endl;
}
}
}
return dst;
}
示例14: vFile
bool CGBFile<GeomType, ValueType>::save(const std::string& directoryname, const std::string& fn, const Volume3d<GeomType, ValueType>& volume)
{
const std::string& filename = directoryname + "/" + fn;
XMLDocument xml;
XMLDeclaration* decl = xml.NewDeclaration();
xml.InsertEndChild(decl);
XMLNode* root = xml.NewElement("root");
xml.InsertEndChild(root);
{
XMLElement* res = xml.NewElement(resStr.c_str());
res->SetAttribute("x", volume.getResolutions()[0]);
res->SetAttribute("y", volume.getResolutions()[1]);
res->SetAttribute("z", volume.getResolutions()[2]);
root->InsertEndChild(res);
}
root->InsertEndChild( create(xml, originStr, volume.getStart()) );
root->InsertEndChild( create(xml, "length", volume.getSpace().getLengths()));
imageFileNames.clear();
{
XMLElement* e = xml.NewElement("volume");
e->SetAttribute("type", "unsigned char");
e->SetAttribute("format", "png");
VolumeFile vFile(directoryname);
for (size_t i = 0; i < volume.getResolutions()[2]; ++i) {
const auto iFile = vFile.toImageFile( "image", i, ImageFile::Type::PNG);
XMLElement* elem = xml.NewElement("image");
const auto& str = iFile.getFileNameIncludingPath();
elem->SetAttribute("path", str.c_str());
e->InsertEndChild(elem);
imageFileNames.push_back(str);
}
root->InsertEndChild(e);
}
//for (size_t i = 0; i < )
xml.SaveFile(filename.c_str());
return true;
}
示例15: 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();
}
}