13 de maio de 2009

Trabalhando com XML - parte 3

Quando fiz o post sobre criar um XML usando C#, ficou faltando mostrar a parte de como criar o cabeçalho do XML dentro da estrutura do DOM. Vou mostrar isso neste post e, para tanto, volto a reproduzir o mesmo XML dos outros dois posts sobre o assunto e vou usá-lo como exemplo :
<?xml version="1.0" encoding="UTF-8" ?>
<enviNFe versao="1.10" xmlns="http://www.portalfiscal.inf.br/nfe">
<idLote>71</idLote>
<NFe>
<infNFe Id="NFe3508059978"versao="1.10">
<cUF>35</cUF>
<cNF>518005127</cNF>
<natOp>Venda a vista</natOp>
<mod>55</mod>
<serie>1</serie>
<dEmi>2008-05-06</dEmi>
<tpAmb>2</tpAmb>
</infNFe>
</NFe>
</enviNFe>

Há uma classe no namespace System.Xml do framework do .Net responsável pela criação do cabeçalho do XML. O nome dessa classe é XmlDeclaration. Considerando a variável doc do tipo XmlDocument criada no post anterior sobre XML, a inclusão do cabeçalho deve ser feita como no exemplo abaixo :
XmlDeclaration decl;
decl = doc.CreateXmlDeclaration("1.0", System.Text.Encoding.UTF8.HeaderName, "");
doc.InsertBefore(decl, doc.DocumentElement);

Os parâmetros para a função CreateXmlDeclaration são a versão do XML (normalmente, o valor "1.0"), em seguida o tipo de codificação a ser utilizado (no exemplo, obtive o nome do encoding UTF-8 definido pelo próprio framework) e, por fim, o valor para o atributo standalone. Como no nosso XML exemplo o standalone não aparece, passei um texto vazio, instruindo a criação do cabeçalho sem essa informação.

A última linha do código faz com que a declaração de cabeçalho seja acrescentada na estrutura DOM do XML imediamente antes do nó raiz. O nó raiz é aqui representado pela propriedade DocumentElement da variável doc (que é um XmlElement).

Nos próximos posts, mostro como exportar essa estrutura DOM para o formato texto de forma que possa ser usado para gravar um arquivo com o conteúdo XML; devo falar também sobre a navegação pelos nós de um XML dentro do DOM e, finalmente, como assinar o XML para enviá-lo à Receita Federal.

Nenhum comentário :

Postar um comentário

OBS: Os comentários enviados a este Blog são submetidos a moderação. Por isso, eles serão publicados somente após aprovação.

Observação: somente um membro deste blog pode postar um comentário.