Nfe - Dúvida em alguns tributos de como montá-los

Olá Boa Noite!
Estou montando as Classes para gerar os XML e encontrei alguns
problemas:

Obs: favor ref. o item pergunta com o item exemplo logo abaixo epois do agradecimento.

No item (1) como ficaria a classe no infNFe ref. ao (infNFe.getDadosDoProduto().add(dadosDoProduto()) ?
huuummm!!! da um get obj dados do produto, não entendi…

    (2) como ficaria a StringList para retormar um estado ?


    (3) como ficaria a classe Transp ref. (transp.getVol().add(vol)) ?
        aqui tbém da um get e depois um add ???...... 


    (4) Tem uma classe ObjectFactory, o que ela faz e como poderia ser construida?
        nesta não tenho a menor idéia de como construi-la.

Peguei exemplos parcias neste links

http://www.javac.com.br/jc/posts/list/892.page#3084

http://www.javac.com.br/jc/posts/list/92-nfe-envinfe-utilizando-jaxb-xml-nfe-completo.page

A quem puder me ajudar desde já meus agradecimentos.

ANT.CARLOS/SP
(Iniciante em JAVA)


(1)–infNFe.getDadosDoProduto().add(dadosDoProduto());

public class InfNFe {
private String Id;
private String Versao;
private Ide dadosDeIdentificacao;
private Emit dadosDoEmitente;
private Dest dadosDoDestinatario;

private Det dadosDoProduto;

private Total totaisDaNFe;
private Transp dadosDoTransporte;
private InfAdic informacoesAdicionais; 

(2)–enderEmit.setUF(TUfEmi.valueOf(“SC”));

public class TUfEmi {

}

(3)–transp.getVol().add(vol);

public class Vol {

private String QVol;
private String NVol;
private String PesoL;
private String PesoB;

(4)–

private static String strValueOf(TNFe nfe) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(TNFe.class);
Marshaller marshaller = context.createMarshaller();
JAXBElement element = new ObjectFactory().createNFe(nfe);
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);

StringWriter sw = new StringWriter();
marshaller.marshal(element, sw);

String xml = sw.toString();
xml = xml.replaceAll("xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\" ", "");
xml = xml.replaceAll("<NFe>", "<NFe xmlns=\"http://www.portalfiscal.inf.br/nfe\">");
return xml;

}