Not that anyone has been using it this decade - or century, even - but there's a technology that exists which is designed for transforming XML into HTML as you just did. It's called XSLT.
You can do it fully within PHP, but here's a demo without.
kjv.xml
<?xml version="1.0"?>
<?xml-stylesheet href="kjv.xslt" type="text/xsl"?>
<root>
<book num="I don't know">
<chapter num="17">
<verse num="1">And after six days Jesus taketh Peter, James, and John his brother, and bringeth them up into an high mountain apart,</verse>
<verse num="2">And was transfigured before them: and his face did shine as the sun, and his raiment was white as the light.</verse>
<verse num="3">And, behold, there appeared unto them Moses and Elias talking with him.</verse>
<verse num="4">Then answered Peter, and said unto Jesus, Lord, it is good for us to be here: if thou wilt, let us make here three tabernacles; one for thee, and one for Moses, and one for Elias.</verse>
<verse num="5">While he yet spake, behold, a bright cloud overshadowed them: and behold a voice out of the cloud, which said, This is my beloved Son, in whom I am well pleased; hear ye him.</verse>
<verse num="6">And when the disciples heard <i>it,</i> they fell on their face, and were sore afraid.</verse>
<verse num="7">And Jesus came and touched them, and said, <span class="j">Arise, and be not afraid. </span></verse>
<verse num="8">And when they had lifted up their eyes, they saw no man, save Jesus only.</verse>
<verse num="9">And as they came down from the mountain, Jesus charged them, saying, <span class="j">Tell the vision to no man, until the Son of man be risen again from the dead. </span></verse>
<verse num="10">And his disciples asked him, saying, Why then say the scribes that Elias must first come?</verse>
<verse num="11">And Jesus answered and said unto them, <span class="j">Elias truly shall first come, and restore all things. </span></verse>
<verse num="12"><span class="j">But I say unto you, That Elias is come already, and they knew him not, but have done unto him whatsoever they listed. Likewise shall also the Son of man suffer of them. </span></verse>
<verse num="13">Then the disciples understood that he spake unto them of John the Baptist.</verse>
<verse num="14">And when they were come to the multitude, there came to him a <i>certain</i> man, kneeling down to him, and saying,</verse>
<verse num="15">Lord, have mercy on my son: for he is lunatick, and sore vexed: for ofttimes he falleth into the fire, and oft into the water.</verse>
<verse num="16">And I brought him to thy disciples, and they could not cure him.</verse>
<verse num="17">Then Jesus answered and said, <span class="j">O faithless and perverse generation, how long shall I be with you? how long shall I suffer you? bring him hither to me. </span></verse>
</chapter>
</book>
</root>
kjv.xslt
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="/root/book" />
</body>
</html>
</xsl:template>
<xsl:template match="book">
<h1>Book <xsl:value-of select="@num" /></h1>
<xsl:apply-templates select="chapter" />
</xsl:template>
<xsl:template match="chapter">
<h2>Chapter <xsl:value-of select="@num" /></h2>
<ol start="{verse[1]/@num}">
<xsl:apply-templates select="verse" />
</ol>
</xsl:template>
<xsl:template match="verse">
<li><xsl:apply-templates /></li>
</xsl:template>
<xsl:template match="b | i | span">
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>
In a browser, which you might have to run through a webserver depending on your browser security settings,
(you can see the italics in verses 6 and 14; the spans are invisible but they are present)