Arrays / strings / comparators / XML


#1

I can easily open an XML file and put it into an XmlElement. My XML files look something like this:

<cunittest> <suite name="WinDriverTests"> <test name="BlockWordRead"> <devtype>PCI, PCIe</devtype> </test> <test name="DeviceToHostDMA"> <devtype>PCI, PCIe</devtype> </test> <test name="DiscreteIO"> <devtype>PCI, PCIe</devtype> </test> <test name="HalfWordInvert"> <devtype>PCI, PCIe</devtype> </test> </suite> <suite name="UniversalTests"> <test name="TestA"> <devtype>PCI</devtype> </test> <test name="TestB"> <devtype>PCI</devtype> </test> <test name="TestC"> <devtype>PCI</devtype> </test> </suite> </cunittest>

And what I’d like to do is parse that into a few arrays. I need need two arrays of “test” elements: one for available tests and one for selected tests. Seems like I should just leave them as XmlElements since I can easily parse the name of the test out of that.

I was hoping I could do something like this:

[code]Array<XmlElement*> aSuiteList;
Array<XmlElement*> aTestList;
Array<XmlElement*> aTestSelected;

ForEachXmlChildElementWithTagName( *mainElement, child, T(“suite”) )
{
aSuiteList.addSorted( child->attributes->name, child );

}

ForEachXmlChildElementWithTagName( *selectedSuite, child, T(“test”) )
{
aTestList.addSorted( child->attributes->name, child );

}
[/code]

But Strings don’t have an “ElemenetComparator”, just “compare”, so my code doesn’t work at all. I could make my own comparator, but obviously I’m missing something, because I’m sure I’m not the first one to want to add items alphabetically to an array.

I did read haydxn’s tutorial and looked at the help for quite awhile, but I’m just a big noob.