Logo ROOT   6.14/05
Reference Guide
xmlreadfile.C File Reference

Detailed Description

View in nbviewer Open in SWAN Example to read and parse any xml file, supported by TXMLEngine class The input file, produced by xmlnewfile.C macro is used If you need full xml syntax support, use TXMLParser instead

0.0174610614777
3.87482094765
Processing /mnt/build/workspace/root-makedoc-v614/rootspi/rdoc/src/v6-14-00-patches/tutorials/xml/xmlreadfile.C...
#include "TXMLEngine.h"
#include <stdio.h>
void DisplayNode(TXMLEngine &xml, XMLNodePointer_t node, Int_t level)
{
// this function display all accessible information about xml node and its children
printf("%*c node: %s\n", level, ' ', xml.GetNodeName(node));
// display namespace
XMLNsPointer_t ns = xml.GetNS(node);
if (ns != 0)
printf("%*c namespace: %s refer: %s\n", level + 2, ' ', xml.GetNSName(ns), xml.GetNSReference(ns));
// display attributes
XMLAttrPointer_t attr = xml.GetFirstAttr(node);
while (attr != 0) {
printf("%*c attr: %s value: %s\n", level + 2, ' ', xml.GetAttrName(attr), xml.GetAttrValue(attr));
attr = xml.GetNextAttr(attr);
}
// display content (if exists)
const char *content = xml.GetNodeContent(node);
if (content != 0)
printf("%*c cont: %s\n", level + 2, ' ', content);
// display all child nodes
XMLNodePointer_t child = xml.GetChild(node);
while (child != 0) {
DisplayNode(xml, child, level + 2);
child = xml.GetNext(child);
}
}
void xmlreadfile(const char* filename = "example.xml")
{
// First create engine
// Now try to parse xml file
// Only file with restricted xml syntax are supported
XMLDocPointer_t xmldoc = xml.ParseFile(filename);
if (!xmldoc) return;
// take access to main node
XMLNodePointer_t mainnode = xml.DocGetRootElement(xmldoc);
// display recursively all nodes and subnodes
DisplayNode(xml, mainnode, 1);
// Release memory before exit
xml.FreeDoc(xmldoc);
}
Author
Sergey Linev

Definition in file xmlreadfile.C.