very bad thing of output the vocabulary in drupal 7 I created four  vocabularies for the "article" content type.
I want to output the vocabulary which belongs to the node; when I used print render($conetent['field_vocab']), it output the vocabulary, but the HTML structure is too bad; more useless &lt;div&gt; and classes make me crazy. In order to remove them, I output it like this:

$content['body']['#object']-&gt;field_vocab['zh-hans'][0]['taxonomy_term']-&gt;name;


It's too long, and it makes me crazy too. If the vocabularies contain more than one taxonomy term, it only prints one.  

Is there a better way to output the  vocabulary?
What you are looking for is what is called field formatters. It is essentially theme function for themes, and can be used to render the same field in ['form'] ways. You can create a custom field formatter where you render the output of the field how you want.

To read more about fields and formatters see: http://drupal.org/node/707832
Or you can checkout this step by step guide on how to create a field formatter.

Another option would be to simply overwrite the theme function (That can be done with any theme function) used for the default field formatter, which would then effect all of the fields across your site.