In this exercise, we are going to create a parser to fill data that represents players and their inventory in an RPG game:
struct InventoryItem { enum Type { Weapon, Armor, Gem, Book, Other } type; QString subType; int durability; }; struct Player { QString name; QString password; int experience; int hitPoints; QList<Item> inventory; QString location; QPoint position; }; struct PlayerInfo { QList<Player> players; };
Save the following document somewhere. We will use it to test whether the parser can read it:
<PlayerInfo> <Player hp="40" exp="23456"> <Name>Gandalf</Name> <Password>mithrandir</Password> <Inventory> <InvItem type="weapon" durability="3"> <SubType>Long sword</SubType> </InvItem> <InvItem type="armor" durability="10"> ...