4#include "xmlBase/XmlParser.h"
5#include "xmlBase/Dom.h"
6#include <xercesc/dom/DOMElement.hpp>
7#include <xercesc/dom/DOMNodeList.hpp>
8#include "facilities/Util.h"
21int main(
int argc,
char* argv[]) {
22 XERCES_CPP_NAMESPACE_USE
26 infile=std::string(
"$(XMLBASEROOT)/xml/test.xml");
29 infile = std::string(argv[1]);
38 doc = parser->
parse(infile.c_str());
41 std::cout <<
"caught exception with message " << std::endl;
42 std::cout << ex.
getMsg() << std::endl;
48 std::cout <<
"Document successfully parsed" << std::endl;
51 DOMElement* docElt = doc->getDocumentElement();
59 std::cout <<
"goodInt value was " << intVal << std::endl << std::endl;
62 std::cout << std::endl <<
"DomException: " << ex.
getMsg()
63 << std::endl << std::endl;
67 std::vector<int> ints;
69 std::cout <<
"Found " << nInts <<
" goodInts: " << std::endl;
70 for (
unsigned iInt=0; iInt < nInts; iInt++) {
71 std::cout << ints[iInt] <<
" ";
73 std::cout << std::endl << std::endl;
76 std::cout << std::endl <<
"DomException processing goodInts: "
77 << ex.
getMsg() << std::endl << std::endl;
81 std::vector<double> doubles;
84 std::cout <<
"Found " << nD <<
" goodDoubles: " << std::endl;
85 for (
unsigned iD=0; iD < nD; iD++) {
86 std::cout << doubles[iD] <<
" ";
88 std::cout << std::endl << std::endl;
91 std::cout << std::endl <<
"DomException processing goodDoubles: "
92 << ex.
getMsg() << std::endl << std::endl;
99 std::cout <<
"badInt value was " << intVal << std::endl << std::endl;
102 std::cout << std::endl <<
"DomException: " << ex.
getMsg()
103 << std::endl << std::endl;
108 std::cout <<
"goodDouble value was " << doubleVal
109 << std::endl << std::endl;
112 std::cout << std::endl <<
"DomException: " << ex.
getMsg()
113 << std::endl << std::endl;
118 std::cout << std::endl <<
"badDouble value was " << doubleVal
119 << std::endl << std::endl;
122 std::cout << std::endl <<
"DomException: " << ex.
getMsg()
123 << std::endl << std::endl;
128 std::vector<double> doubles;
131 std::cout <<
"Found " << nD <<
" badDoubles: " << std::endl;
132 for (
unsigned iD=0; iD < nD; iD++) {
133 std::cout << doubles[iD] <<
" ";
135 std::cout << std::endl << std::endl;
138 std::cout << std::endl <<
"DomException processing badDoubles: "
140 << std::endl << std::endl;
148 if (*(argv[2]) == *hyphen) {
152 char *filename = argv[2];
153 out =
new std::ofstream(filename);
155 *out <<
"Document source: " << std::string(argv[1]) << std::endl;
156 *out << std::endl <<
"Straight print of document:" << std::endl;
158 *out << std::endl << std::endl <<
"Add indentation and line breaks:"
static int expandEnvVar(std::string *toExpand, const std::string &openDel=std::string("$("), const std::string &closeDel=std::string(")"))
Base exception class for Dom.
virtual std::string getMsg()
static int getIntAttribute(const DOMNode *elt, std::string attName)
static void prettyPrintElement(DOMNode *elt, std::ostream &out, std::string prefix)
static void printElement(DOMNode *elt, std::ostream &out)
static double getDoubleAttribute(const DOMNode *elt, std::string attName)
static DOMElement * findFirstChildByName(const DOMElement *parent, const char *const name)
static unsigned getDoublesAttribute(const DOMNode *elt, std::string attName, std::vector< double > &values, bool clear=true)
static unsigned getIntsAttribute(const DOMNode *elt, std::string attName, std::vector< int > &values, bool clear=true)
Exception class for XmlParser, XmlErrorHandler.
virtual std::string getMsg()
DOMDocument * parse(const char *const filename, const std::string &docType=std::string(""))
Parse an xml file, returning document node if successful.