Tema: Leer Xml
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/10/2014, 19:14
evikar
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 13 años, 10 meses
Puntos: 0
Leer Xml

Estimados estoy tratando de obtener datos de Tag dentro de un nodos con atriutos

este es el XML
Código:
<DescargaDTResult xmlns="http://dtservice.iconstruye.cl/">
  <EnvioICDoc xmlns="http://www.iconstruye.com/ICDocPg">
    <SetICDoc ID="22-10-2014 8:36:55">
      <Caratula version="1">
        <RutEmisor>96513310-0</RutEmisor>
        <TmstFirmaEnv>2014-10-22T08:36:55</TmstFirmaEnv>
        <SubTotICDoc>
          <TpoICDoc>FC</TpoICDoc>
          <NroICDoc>10</NroICDoc>
        </SubTotICDoc>
      </Caratula>
      <ICDoc version="4.01">
        <FechaXML>2014-10-22T08:36:55</FechaXML>
        <Documento ID="6583122">
          <LineasFactSinOc></LineasFactSinOc>
          <Encabezado>
            <IdDoc>
              <TipoDoc>FC</TipoDoc>
              <NumDoc>1234567</NumDoc>
              <FolioUnico>L145573-R132930</FolioUnico>
              <FchTransaccion>2014-10-10T16:03:41</FchTransaccion>
              <FchEmis>2014-10-10</FchEmis>
              <FchVenc>2015-01-12</FchVenc>
              <FchRecepcion>2014-10-10</FchRecepcion>
              <FchEstimadaPago>2014-10-10</FchEstimadaPago>
              <TipoDocTributario>Afecta</TipoDocTributario>
              <AgenteRetenedor>1</AgenteRetenedor>
              <SinOC>false</SinOC>
              <Electronico>false</Electronico>          
            </IdDoc>
            
            <Proveedor>
              <RUTProveedor>96792430-K</RUTProveedor>
              <Extranjero>false</Extranjero>
              <RznSoc>SODIMAC S.A.</RznSoc>             
            </Proveedor>
            <Totales>
              <MntNeto>86100.000000</MntNeto>
              <IVA>16359.000000</IVA>              
            </Totales>           
          </Encabezado>
          <DocAsociados ID="9482069">
            ...
            <ItemRecibidos ID="20303330">
              ..
              <LineaOC ID="20303330-28416369">
                ...
              </LineaOC>
            </ItemRecibidos>
          </DocAsociados>
        </Documento>
      </ICDoc>
      <ICDoc version="4.01">
         <FechaXML>XXXXXXX</FechaXML>
         <Documento ID="XXXXXXX">
         </Documento>
      </ICDoc>
    </SetICDoc>
  </EnvioICDoc>
</DescargaDTResult>
actualmente obtengo los valores de esta forma:
Código:
string Xml = Cliente.Procesar("inarco", "pass01inarco", xxx).InnerXml;


            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(Xml);
            XmlNodeList personas = xmlDoc.GetElementsByTagName("LineaOC");
            textBox1.Text = Xml;
            XmlNodeList elemList = xmlDoc.GetElementsByTagName("NumOC");
            for (int i = 0; i < elemList.Count; i++)
            {
                dgvDetalleOC.Rows.Insert(0, elemList[i].InnerText.ToString().Replace("-", ""), "", "", "", "");
            }

 XmlNodeList elemListNumDoc = xmlDoc.GetElementsByTagName("NumDoc");
            for (int i = 0; i < elemListNumDoc.Count; i++)
            {

                dgvNumDoc.Rows.Insert(0, elemListNumDoc[i].InnerText.ToString(), "", "", "", "");
            }
            XmlNodeList elemListz = xmlDoc.GetElementsByTagName("FchEmis");
            for (int i = 0; i < elemListz.Count; i++)
            {
pero esto claramente no es la mejor opcion.

de que forma podria obtener una lista con el resultado asi:

Documento ID RutComprador RutProveedor NumDoc NumOC NumLineaOC
3979675 111111-1 79881570-9 1111 3333 1
3979688 222222-2 79881570-9 3333 4444 1
3979688 222222-2 79881570-9 3333 4444 2

lo necesito agrupado por nodos...