diff options
Diffstat (limited to 'tests/xmltest.cpp')
-rw-r--r-- | tests/xmltest.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/xmltest.cpp b/tests/xmltest.cpp new file mode 100644 index 0000000..c8e1830 --- /dev/null +++ b/tests/xmltest.cpp @@ -0,0 +1,52 @@ +#include <utilxml.h> +#include <iostream> + +using namespace sword; +using namespace std; + +int main(int argc, char **argv) { + + const char *xml = "<verse osisID=\"John.1.1\" type=\'test type\' yeah = \"stuff\" />"; + cout << ((argc > 1) ? argv[1]: xml) << "\n"; + + XMLTag x((argc > 1) ? argv[1] : xml); + + cout << x.toString() << "\n"; + x.setAttribute("addedAttribute", "with a \" quote"); + cout << x.toString() << "\n"; + cout << "Tag name: [" << x.getName() << "]\n"; + StringList attributes = x.getAttributeNames(); + for (StringList::iterator it = attributes.begin(); it != attributes.end(); it++) { + const char *name = it->c_str(); + cout << " - attribute: [" << name << "] = ["; + cout << x.getAttribute(name) << "]\n"; + int count = x.getAttributePartCount(name, ' '); + cout << "\t" << count << " parts:\n"; + int i = (count > 1) ? 0 : -1; // -1 for whole value cuz it's faster, but does the same thing as 0 + do { + cout << "\t" << x.getAttribute(name, i, ' ') << "\n"; + if (i < 0) i = 0; // to handle our -1 condition + } while (++i < count); + } + cout << " isEmpty: " << x.isEmpty() << "\n"; + cout << " isEndTag: " << x.isEndTag() << "\n"; + cout << "\n"; + + + if (argc < 2) { // only run if we're defaulted + const char *testParts="ABC D EF GHIJ"; + cout << "Setting attribute 'multiPart' to: '" << testParts << "'\n"; + x.setAttribute("multiPart", testParts); + cout << x << "\n"; + cout << "Setting part 2 to 'MMM'\n"; + x.setAttribute("multiPart", "MMM", 2, ' '); + cout << x << "\n"; + cout << "Removing part 1\n"; + x.setAttribute("multiPart", 0, 1, ' '); + cout << x << "\n"; + cout << "Removing part 2\n"; + x.setAttribute("multiPart", 0, 2, ' '); + cout << x << "\n"; + } + +} |