SlashXML (C++ version)
Oct 5 2010 · XML
The C++ code for SlashXML is now up, it’s in the /cpp folder within the repository. The C++ version supports most of the functionality the C# version does; maintaining multiple codebases is very difficult!
The C++ version also has 2 dependencies: TinyXML, an awesome, light weight XML parser, and AString, a not-so-lightweight UTF-8 string class. I know not everyone might be crazy about using AString, especially as it’s fairly bloated; I fucked around with things like custom numeric to string conversions with this class – unnecessary stuff, and it’s probably slower than using sprintf. However, it’s well encapsulated in it’s own namespace. I’ll try to have something more elegant in the future.
Load an XML document from a file
SlashXMLReader xmlreader;
xmlreader.LoadXMLFile("test.xml");
Load an XML document from a string
SlashXMLReader xmlreader;
std::vector<unsigned char> xmlData;
// copy octets from string into xmlData here
xmlreader.LoadXMLData(xmlData);
Retrieve data from an element
SlashXMLString data = xmlreader.GetData("root/child");
Retrieve data from an indexed element
SlashXMLString data = xmlreader.GetData("root/child[2]");
Get the number of child nodes under an element
int numKids = xmlreader.GetNumChildren("root", "child");
The SlashXMLReader::LoadXMLData() method is kinda messed up and bizarre. I don’t even remember what was going thru my mind there.