Revision 006c98b85d8b743848d4a89773728740c39a465b authored by Vassil Vassilev on 27 March 2014, 10:26:03 UTC, committed by Vassil Vassilev on 31 March 2014, 11:57:22 UTC
1 parent bdd1961
xmlreadfile.C
// 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
//Author: Sergey Linev
#include "TXMLEngine.h"
void DisplayNode(TXMLEngine* xml, XMLNodePointer_t node, Int_t level);
void xmlreadfile(const char* filename = "example.xml")
{
// First create engine
TXMLEngine* xml = new TXMLEngine;
// Now try to parse xml file
// Only file with restricted xml syntax are supported
XMLDocPointer_t xmldoc = xml->ParseFile(filename);
if (xmldoc==0) {
delete xml;
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);
delete xml;
}
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);
}
}
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...