A blast in the Chinese province of Xinjiang has killed 31 people and injured more than 90, local television channels have reported.