The Israeli army said on Saturday that the shooting occurred near the Jewish settlement of Beqaot.
An Israeli ambulance service said the soldier was killed in a drive-by shooting.
According to army radio, the attacker was killed by Israeli troops, but there was no immediate confirmation from Palestinian security or medical sources.
There was no immediate claim of responsibility for the attack, which took place east of the northern West Bank city of Nablus.
The latest death brings to at least 5,336 the number of people killed since the start of the Palestinian uprising in September 2000, most of them Palestinians.