none
Ler arquivo XML com namespace (xmlns)

    Question

  • Preciso ler arquivos XML gerado pelo sistema de NFe, mas estou com problemas com o namespace (xmlns) que está no arquivo. 

    O erro é: "Referência de objeto não definida para uma instância de um objeto."

    Preciso saber como "referenciar"/"instanciar" o namespace no objeto de leitura.


    Trecho do código que gera o erro:

    xmlReader = new XmlDocument();
    xmlReader.LoadXml(dados);
    cpf = xmlReader.SelectSingleNode("dest/CPF").InnerText; //Nessa linha dá o erro

     

    Exemplo de XML que preciso ler:

    - <sistema versao="1.02" xmlns="http://www.portalfiscal.inf.br/nfe">
    - <dest>
     <CPF>01599777777</CPF> 
     <xNome>WILLIAM</xNome> 
    - <enderDest>
     <xLgr>RUA JOAO MARIA</xLgr> 
     <nro>478</nro> 
     <xBairro>PARQUE SILVA</xBairro> 
     <cMun>4314902</cMun> 
     <xMun>Porto Alegre</xMun> 
     <UF>RS</UF> 
     <CEP>91180660</CEP> 
     <cPais>1058</cPais> 
     <xPais>BRASIL</xPais> 
     <fone>5184243482</fone> 
     </enderDest>
     </dest>
     </sistema>
    Tuesday, May 25, 2010 12:33 PM

Answers

  • Thiago, se o seu sistema já faz o uso do .NET Framework 3.5, recomendo o uso de LINQ To XML.

    Tente o seguinte código:

    //Carrega o arquivo XML no objeto do tipo XDocument
    XDocument xDoc = XDocument.Load(@"Sistema.xml");

    var query = (from xml in xDoc.Descendants("dest")
                       select xml.Element("CPF"));

     

    Também dê uma conferida em: http://pt.how-to.mobi/index.php?id=295911

    Poste os resultados.

    Abraços

    Luiz Gustavo

     


    Abraços. Luiz Gustavo - Se foi útil, marque como respondido e ajude aos outros.
    Tuesday, May 25, 2010 1:22 PM

All replies

  • Thiago, se o seu sistema já faz o uso do .NET Framework 3.5, recomendo o uso de LINQ To XML.

    Tente o seguinte código:

    //Carrega o arquivo XML no objeto do tipo XDocument
    XDocument xDoc = XDocument.Load(@"Sistema.xml");

    var query = (from xml in xDoc.Descendants("dest")
                       select xml.Element("CPF"));

     

    Também dê uma conferida em: http://pt.how-to.mobi/index.php?id=295911

    Poste os resultados.

    Abraços

    Luiz Gustavo

     


    Abraços. Luiz Gustavo - Se foi útil, marque como respondido e ajude aos outros.
    Tuesday, May 25, 2010 1:22 PM
  • Thiago,

    Segue um exemplo

     using (Stream stream = openFileDialog.OpenFile())
            {
              XmlDocument xmlDocument = new XmlDocument();
              xmlDocument.Load(stream);
              XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager(xmlDocument.NameTable);
              xmlNamespaceManager.AddNamespace("mpp", "http://schemas.microsoft.com/project");
    
    // Ler o arquivo
    
    
              }
    • Proposed as answer by Thiago MDTech Tuesday, May 25, 2010 4:49 PM
    Tuesday, May 25, 2010 4:49 PM