Que tal colegas ....
Quiero leer el XML de LCO que publica el SAT en http://stackoverflow.com/questions/6...nq-to-read-xml usando la técnica de LINQ
El problema es que este XML trae el prefijo “lco” en cada nodo y no se como formar el XName para acensarlo.
Con un editor puedo quitarle el prefijo “lco” al XML y listo lo puedo leer con LINQ de hecho les anexo
1 el código fuente de como hago el Query al LCO.xml y si funciona pero sin que traiga el prefijo
2. El XML con el prefijo lco
3. El mismo XML pero sin el prefijo lco
Pero la idea no es estar quitando este prefijo “lco” , sino corregir el XName que se usa en la sentencia xdoc.Descendants("Certificado") y en la xdoc.Descendants("Contribuyente")
Mi pregunta es como acceso los nodos que traen el prefijo lco ( lco:Certificado y lco:Certificado ) usando LINQ ¿???
Saludos
Halcón Divino
Monterrey N.L.
México.
Programa en C# que lee el XML sin prefijo usando LINQ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
String RutaLCO = @"C:\ProyectosWeb\DownLoadLCO\Datos\";
string xmlLCO = RutaLCO + "TestX.XML";
//Cargamos XML
XDocument xdoc = XDocument.Load(xmlLCO);
//Query
var LCO = from Contribuyente in xdoc.Descendants("Contribuyente")
select new
{
RFC = Contribuyente.Attribute("RFC").Value,
Certificados = Contribuyente.Descendants("Certificado")
};
//Resultado
foreach (var Contribuyente in LCO)
{
Console.WriteLine(Contribuyente.RFC);
foreach (var Certificado in Contribuyente.Certificados)
{
Console.WriteLine(" " + Certificado.Attribute("noCertificado").Value);
Console.WriteLine(" " + Certificado.Attribute("ValidezObligaciones").Value );
Console.WriteLine(" " + Certificado.Attribute("EstatusCertificado").Value) ;
Console.WriteLine(" " + Certificado.Attribute("FechaInicio").Value);
Console.WriteLine(" " + Certificado.Attribute("FechaFinal").Value);
}
}
}
}
}
Ejemplo de LCO con el prefijo lco en cada nodo
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<lco:LCO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:lco="http:/www.sat.gob.mx/cfd/LCO"
Fecha="2012-06-20T00:11:14"
xsi:schemaLocation="http:/www.sat.gob.mx/cfd/LCO
LCO.xsd">
<lco:Contribuyente RFC="OECS640425710">
<lco:Certificado
ValidezObligaciones="1" EstatusCertificado="A" noCertificado="00001000000102409569" FechaFinal="2012-12-15T16:47:20" FechaInicio="2010-12-16T16:47:20">
</lco:Certificado>
<lco:Certificado
ValidezObligaciones="1" EstatusCertificado="A" noCertificado="00001000000102734360" FechaFinal="2013-01-31T17:20:51" FechaInicio="2011-02-01T17:20:51">
</lco:Certificado>
<lco:Certificado
ValidezObligaciones="1" EstatusCertificado="A" noCertificado="00001000000102734826" FechaFinal="2013-01-31T17:41:22" FechaInicio="2011-02-01T17:41:22">
</lco:Certificado>
</lco:Contribuyente>
<lco:Contribuyente RFC="OECS4211031T1">
<lco:Certificado
ValidezObligaciones="1" EstatusCertificado="A" noCertificado="00001000000102100644" FechaFinal="2012-10-19T23:28:04" FechaInicio="2010-10-20T23:28:04">
</lco:Certificado>
</lco:Contribuyente>
<lco:Contribuyente RFC="OECS570104RA2">
<lco:Certificado
ValidezObligaciones="1" EstatusCertificado="A" noCertificado="00001000000102411189" FechaFinal="2012-12-15T17:43:14" FechaInicio="2010-12-16T17:43:14">
</lco:Certificado>
</lco:Contribuyente>
<lco:Contribuyente RFC="OECS610609RS8">
<lco:Certificado
ValidezObligaciones="1" EstatusCertificado="C" noCertificado="00001000000101177216" FechaFinal="2012-02-11T15:35:49" FechaInicio="2010-02-11T15:35:49">
</lco:Certificado>
<lco:Certificado
ValidezObligaciones="1" EstatusCertificado="A" noCertificado="00001000000200438039" FechaFinal="2016-02-29T00:02:55" FechaInicio="2012-02-29T00:02:55">
</lco:Certificado>
<lco:Certificado
ValidezObligaciones="1" EstatusCertificado="A" noCertificado="00001000000200423983" FechaFinal="2016-02-27T20:54:58" FechaInicio="2012-02-27T20:54:58">
</lco:Certificado>
</lco:Contribuyente>
</lco:LCO>
Mismo ejemplo pero sin el prefijo lco
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LCO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:lco="http:/www.sat.gob.mx/cfd/LCO"
Fecha="2012-06-20T00:11:14"
xsi:schemaLocation="http:/www.sat.gob.mx/cfd/LCO
LCO.xsd">
<Contribuyente RFC="OECS640425710">
<Certificado
ValidezObligaciones="1" EstatusCertificado="A" noCertificado="00001000000102409569" FechaFinal="2012-12-15T16:47:20" FechaInicio="2010-12-16T16:47:20">
</Certificado>
<Certificado
ValidezObligaciones="1" EstatusCertificado="A" noCertificado="00001000000102734360" FechaFinal="2013-01-31T17:20:51" FechaInicio="2011-02-01T17:20:51">
</Certificado>
<Certificado
ValidezObligaciones="1" EstatusCertificado="A" noCertificado="00001000000102734826" FechaFinal="2013-01-31T17:41:22" FechaInicio="2011-02-01T17:41:22">
</Certificado>
</Contribuyente>
<Contribuyente RFC="OECS4211031T1">
<Certificado
ValidezObligaciones="1" EstatusCertificado="A" noCertificado="00001000000102100644" FechaFinal="2012-10-19T23:28:04" FechaInicio="2010-10-20T23:28:04">
</Certificado>
</Contribuyente>
<Contribuyente RFC="OECS570104RA2">
<Certificado
ValidezObligaciones="1" EstatusCertificado="A" noCertificado="00001000000102411189" FechaFinal="2012-12-15T17:43:14" FechaInicio="2010-12-16T17:43:14">
</Certificado>
</Contribuyente>
<Contribuyente RFC="OECS610609RS8">
<Certificado
ValidezObligaciones="1" EstatusCertificado="C" noCertificado="00001000000101177216" FechaFinal="2012-02-11T15:35:49" FechaInicio="2010-02-11T15:35:49">
</Certificado>
<Certificado
ValidezObligaciones="1" EstatusCertificado="A" noCertificado="00001000000200438039" FechaFinal="2016-02-29T00:02:55" FechaInicio="2012-02-29T00:02:55">
</Certificado>
<Certificado
ValidezObligaciones="1" EstatusCertificado="A" noCertificado="00001000000200423983" FechaFinal="2016-02-27T20:54:58" FechaInicio="2012-02-27T20:54:58">
</Certificado>
</Contribuyente>
</LCO>