From 3162abcdecf08e24c182d1caac4afe2046b4e740 Mon Sep 17 00:00:00 2001 From: Dave Goodwin Date: Sun, 6 Jun 2004 22:02:32 +0000 Subject: [PATCH] moved reading of xml element data to Elements.cpp --- Cantera/src/Elements.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/Cantera/src/Elements.cpp b/Cantera/src/Elements.cpp index c1b10c334..3bcafcd38 100644 --- a/Cantera/src/Elements.cpp +++ b/Cantera/src/Elements.cpp @@ -22,8 +22,11 @@ #include "Elements.h" #include "xml.h" +#include "ctml.h" #include "ctexceptions.h" +using namespace ctml; + #ifdef USE_DGG_CODE #include #endif @@ -508,6 +511,36 @@ namespace Cantera { return *this; } + + void Elements::addElementsFromXML(const XML_Node& phase) { + + // get the declared element names + XML_Node& elements = phase.child("elementArray"); + vector enames; + getStringArray(elements, enames); + + // // element database defaults to elements.xml + string element_database = "elements.xml"; + if (elements.hasAttrib("datasrc")) + element_database = elements["datasrc"]; + XML_Node* doc = get_XML_File(element_database); + XML_Node* dbe = &doc->child("ctml/elementData"); + + int nel = enames.size(); + int i; + string enm; + for (i = 0; i < nel; i++) { + XML_Node* e = dbe->findByAttr("name",enames[i]); + if (e) { + addUniqueElement(*e); + } + else { + throw CanteraError("addElementsFromXML","no data for element " + +enames[i]); + } + } + } + /*********************************************************************** * subscribe(), unsubscribe(), and reportSubscriptions(): *