Yes, but it is a very odd xml. In CoreUnits.xml, search for city militia. There is one for each race, so any change you do has to be done for every one. It will take some know how to give them armor if that is what you are thinking. This is the weapon choosing system:
<EquipmentUpgradeDef>
<EquipmentSlot>Weapon</EquipmentSlot>
<SelectionCriteria>MaximizeSum</SelectionCriteria>
<ComparisonAttribute>UnitStat_Attack_Blunt</ComparisonAttribute>
<ComparisonAttribute>UnitStat_Attack_Cutting</ComparisonAttribute>
<ComparisonAttribute>UnitStat_Attack_Pierce</ComparisonAttribute>
<ComparisonAttribute>UnitStat_Attack_Cold</ComparisonAttribute>
<ComparisonAttribute>UnitStat_Attack_Fire</ComparisonAttribute>
<ComparisonAttribute>UnitStat_Attack_Lightning</ComparisonAttribute>
<ComparisonAttribute>UnitStat_Attack_Poison</ComparisonAttribute>
</EquipmentUpgradeDef>
The reason they took armor off them was probably to avoid needing to deal with encumbrance. I modded my game to give -4 Init at 50%, -8 Init at 75%, and -12 Init at 100%. Pretty much kills a unit to have too much weight so I haven't messed with city guards, except to add an archer version. This can be done by duplicating every race's city defender entries, deleting all the max sums and creating a new unitstat_attack_ranged and then adding points of this to each bow. A shortbow has two points. A Yew Longbow has 50. The numbers are arbitrary, but they allow the game to pick the best bow as the game goes on. Rather complicated I know.