summaryrefslogtreecommitdiff
path: root/tests/xmltest.cpp
blob: c8e1830e12754cc32dba43347556bf1c1f57e5df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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";
	}
	
}