How to update data between xml tags

Is there a way to modify Non Null data between <host> and </host> tags to a new value ?- may be using sed/awk?
I tried this sed 's|.*<host>\(?*\)</host>.*|\<host>xxx</host>|' but it is updating the host which has null value - want opposite of this - Thanks in advance for you help!!

For Example:
<node>node1</node>
<host>178.23.43</host>
<node>node2</node>
<host></host>
<node>node3</node>
<host>usilsunny1</host>
<node>node4</node>
<host> </host>

should modify to

<node>node1</node>
<host>NewHostHame</host>
<node>node2</node>
<host></host>
<node>node3</node>
<host>NewHostHame</host>
<node>node4</node>
<host></host>

awk -F'<|>' '/<host>[^<>]+<\/host>/{sub($3,"NewHostHame")}1' file

Perfect - Thank you so much!!