以大量销售迭代 XML [英] Iterate on XML with lots of sales

查看:26
本文介绍了以大量销售迭代 XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含大量销售的 XML 文件,并且在销售中我有多个项目.问题是:我找不到迭代产品的解决方案

I have a XML file with lots of sales, and in the sales I have multiple items to. The problem is: I can't find the solution to iterate on products

销售在标签CFe"下分开.我正在迭代这个标签,当我到达 items 标签时,我尝试再次迭代,但只迭代一个项目.

The sales are separeted under the tag "CFe". I'm iterating on this tag, and when I reach items tag, I try to iterate once again, but only iterate on a single item.

我只注意到在 nCFe 120476 中有 5 个项目.

I only noticed that in the nCFe 120476 who had 5 items.

这是代码

foreach (var file in files)
            {
                if (Path.GetExtension(file) == ".xml")
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(file);
                    XmlNodeList cfes = xmlDoc.GetElementsByTagName("CFe");
                    foreach (XmlNode cfe in cfes)
                    {
                        XmlNode infcfe = cfe.ChildNodes[0];
                        string UF = infcfe["ide"]["cUF"].InnerText;
                        string NF = infcfe["ide"]["cNF"].InnerText;
                        string nCFe = infcfe["ide"]["nCFe"].InnerText;
                        DateTime dataMovimento = DateTime.ParseExact(infcfe["ide"]["dEmi"].InnerText, "yyyyMMdd", CultureInfo.CurrentCulture);

                        foreach (XmlNode node in infcfe["det"])
                        {
                            if (node.Name == "prod")
                            {
                                string cProd = node["cProd"].InnerText;
                                string xProd = node["xProd"].InnerText;
                                string Ncm = node["NCM"].InnerText;
                            }
                            if (node.Name == "imposto")
                            {
                                string elementName = node.ChildNodes[1].InnerXml.Substring(1,9);
                            }
                        }
                    }
                }
            }

我认为的问题在于:foreach(infcfe["det"] 中的 XmlNode 节点)当我调试 infcfe["det"] 时,我有 2 个项目,但 XML 文件有 5 个项目.

The problem I think it's here: foreach (XmlNode node in infcfe["det"]) When I debug over infcfe["det"] I have a count of 2 items, altought the XML file have 5 items.

这是 XML 部分:

    <?xml version="1.0" encoding="UTF-8"?>
<CFe>
   <infCFe Id="CFe35190421029223000151590001665441204767790071" versao="0.07" versaoDadosEnt="0.07" versaoSB="020202">
      <ide>
         <cUF>35</cUF>
         <cNF>779007</cNF>
         <mod>59</mod>
         <nserieSAT>000166544</nserieSAT>
         <nCFe>120476</nCFe>
         <dEmi>20190401</dEmi>
         <hEmi>090447</hEmi>
         <cDV>1</cDV>
         <tpAmb>1</tpAmb>
         <CNPJ>06061935000164</CNPJ>
         <signAC>oQhV07GRMasCrhXO0qKsmepn4uRI+4NAkRoa2KphkevrSE4v20XerMgvglL4vK5rgRvXLZnaaMljWHspRMvt6Lwy5d3r+en0kabhTPR7yGVbkxX07QX0YylvCcCKnzuYAtnZAuYB7hdGx1Mfhuv6RgvNxJ+sew+rm9OWuInwgzazBNct7+soq4c33sfJ44NZxVyibgcJjQrzgKgLL9QchMwuthisLldNo6YLJRBLO+q3tVjW6zRe+KtrLcC/7y1N2Vi6klAfLusKQW4c7ONYfuP00IdzOkqNs6l4Iy2Ev5HwQWJLTPmtf/EDbxe4w0/Qw1LQjKybxo4TfOSYBKWQgw==</signAC>
         <assinaturaQRCODE>ZWhhIV0gYXmm+xhn/x9j1HsR3VGc2A+BGCyu2uhC3KJeyh92I+WWVmfpig+FjQbJp2MmBo1qo9oTVe8smDTfi8rNW4nNogMhO3SC3Uj7PcFUSEzH5eVgefUgWsSqVMBafkhOAtjTE563u21mcSUm7VL9E/bYaJz/SQBQUZNOfVlSmIXsact6eYYAuMPdnNNnWYIUV32PEInfK4/GNw0SZ6AKt90s28+AeueTJQZ3vZ7J+OpA+ZFf4x2H2cPaNIzPSdWyb/nkg7yP+MAlm2ZBMSvcTxDCRhWgo/EuJkOII7QY5K2Memgp4kQO6fgkNNCJI0LBEUHzhEf1IKdxagxKHQ==</assinaturaQRCODE>
         <numeroCaixa>001</numeroCaixa>
      </ide>
      <emit>
         <CNPJ>21029223000151</CNPJ>
         <xNome>EMPORIO E PADARIA SANTO ANTONIO EIRELI</xNome>
         <enderEmit>
            <xLgr>RUA DOUTOR CUNHA MOREIRA</xLgr>
            <nro>37</nro>
            <xCpl>LETRA A</xCpl>
            <xBairro>ENCRUZILHADA</xBairro>
            <xMun>SANTOS</xMun>
            <CEP>11050240</CEP>
         </enderEmit>
         <IE>633502394110</IE>
         <cRegTrib>1</cRegTrib>
         <indRatISSQN>N</indRatISSQN>
      </emit>
      <dest />
      <det nItem="1">
         <prod>
            <cProd>89</cProd>
            <cEAN>7891000073018</cEAN>
            <xProd>IOG NESTLE NAT DESN 160G</xProd>
            <NCM>04031000</NCM>
            <CFOP>5102</CFOP>
            <uCom>UN</uCom>
            <qCom>1.0000</qCom>
            <vUnCom>2.79</vUnCom>
            <vProd>2.79</vProd>
            <indRegra>A</indRegra>
            <vItem>2.79</vItem>
            <obsFiscoDet xCampoDet="Cod. CEST">
               <xTextoDet>1703100</xTextoDet>
            </obsFiscoDet>
         </prod>
         <imposto>
            <vItem12741>1.11</vItem12741>
            <ICMS>
               <ICMSSN900>
                  <Orig>0</Orig>
                  <CSOSN>900</CSOSN>
                  <pICMS>18.00</pICMS>
                  <vICMS>0.50</vICMS>
               </ICMSSN900>
            </ICMS>
            <PIS>
               <PISSN>
                  <CST>49</CST>
               </PISSN>
            </PIS>
            <COFINS>
               <COFINSSN>
                  <CST>49</CST>
               </COFINSSN>
            </COFINS>
         </imposto>
      </det>
      <det nItem="2">
         <prod>
            <cProd>185</cProd>
            <cEAN>7898994081623</cEAN>
            <xProd>TAPI DA TERRI 500G</xProd>
            <NCM>19030000</NCM>
            <CFOP>5405</CFOP>
            <uCom>UN</uCom>
            <qCom>1.0000</qCom>
            <vUnCom>6.49</vUnCom>
            <vProd>6.49</vProd>
            <indRegra>A</indRegra>
            <vItem>6.49</vItem>
            <obsFiscoDet xCampoDet="Cod. CEST">
               <xTextoDet>1703100</xTextoDet>
            </obsFiscoDet>
         </prod>
         <imposto>
            <vItem12741>2.32</vItem12741>
            <ICMS>
               <ICMSSN102>
                  <Orig>0</Orig>
                  <CSOSN>500</CSOSN>
               </ICMSSN102>
            </ICMS>
            <PIS>
               <PISSN>
                  <CST>49</CST>
               </PISSN>
            </PIS>
            <COFINS>
               <COFINSSN>
                  <CST>49</CST>
               </COFINSSN>
            </COFINS>
         </imposto>
      </det>
      <det nItem="3">
         <prod>
            <cProd>3487</cProd>
            <cEAN>7898934605063</cEAN>
            <xProd>OVOS BCO ANTUNES DUZIA</xProd>
            <NCM>04072100</NCM>
            <CFOP>5405</CFOP>
            <uCom>UN</uCom>
            <qCom>1.0000</qCom>
            <vUnCom>6.99</vUnCom>
            <vProd>6.99</vProd>
            <indRegra>A</indRegra>
            <vItem>6.99</vItem>
            <obsFiscoDet xCampoDet="Cod. CEST">
               <xTextoDet>1703100</xTextoDet>
            </obsFiscoDet>
         </prod>
         <imposto>
            <vItem12741>1.99</vItem12741>
            <ICMS>
               <ICMSSN102>
                  <Orig>0</Orig>
                  <CSOSN>500</CSOSN>
               </ICMSSN102>
            </ICMS>
            <PIS>
               <PISSN>
                  <CST>49</CST>
               </PISSN>
            </PIS>
            <COFINS>
               <COFINSSN>
                  <CST>49</CST>
               </COFINSSN>
            </COFINS>
         </imposto>
      </det>
      <det nItem="4">
         <prod>
            <cProd>1585</cProd>
            <xProd>PERA WILIANS KG</xProd>
            <NCM>08083000</NCM>
            <CFOP>5102</CFOP>
            <uCom>KG</uCom>
            <qCom>0.1400</qCom>
            <vUnCom>9.98</vUnCom>
            <vProd>1.40</vProd>
            <indRegra>A</indRegra>
            <vItem>1.40</vItem>
            <obsFiscoDet xCampoDet="Cod. CEST">
               <xTextoDet>1703100</xTextoDet>
            </obsFiscoDet>
         </prod>
         <imposto>
            <vItem12741>0.40</vItem12741>
            <ICMS>
               <ICMSSN900>
                  <Orig>0</Orig>
                  <CSOSN>900</CSOSN>
                  <pICMS>18.00</pICMS>
                  <vICMS>0.25</vICMS>
               </ICMSSN900>
            </ICMS>
            <PIS>
               <PISSN>
                  <CST>49</CST>
               </PISSN>
            </PIS>
            <COFINS>
               <COFINSSN>
                  <CST>49</CST>
               </COFINSSN>
            </COFINS>
         </imposto>
      </det>
      <det nItem="5">
         <prod>
            <cProd>7400</cProd>
            <xProd>MAÇA GALA KG</xProd>
            <NCM>08081000</NCM>
            <CFOP>5102</CFOP>
            <uCom>KG</uCom>
            <qCom>0.2300</qCom>
            <vUnCom>4.99</vUnCom>
            <vProd>1.15</vProd>
            <indRegra>A</indRegra>
            <vItem>1.15</vItem>
            <obsFiscoDet xCampoDet="Cod. CEST">
               <xTextoDet>1703100</xTextoDet>
            </obsFiscoDet>
         </prod>
         <imposto>
            <vItem12741>0.16</vItem12741>
            <ICMS>
               <ICMSSN900>
                  <Orig>0</Orig>
                  <CSOSN>900</CSOSN>
                  <pICMS>18.00</pICMS>
                  <vICMS>0.21</vICMS>
               </ICMSSN900>
            </ICMS>
            <PIS>
               <PISSN>
                  <CST>49</CST>
               </PISSN>
            </PIS>
            <COFINS>
               <COFINSSN>
                  <CST>49</CST>
               </COFINSSN>
            </COFINS>
         </imposto>
      </det>
      <total>
         <ICMSTot>
            <vICMS>0.96</vICMS>
            <vProd>18.82</vProd>
            <vDesc>0.00</vDesc>
            <vPIS>0.00</vPIS>
            <vCOFINS>0.00</vCOFINS>
            <vPISST>0.00</vPISST>
            <vCOFINSST>0.00</vCOFINSST>
            <vOutro>0.00</vOutro>
         </ICMSTot>
         <vCFe>18.82</vCFe>
         <vCFeLei12741>5.98</vCFeLei12741>
      </total>
      <pgto>
         <MP>
            <cMP>99</cMP>
            <vMP>18.82</vMP>
         </MP>
         <vTroco>0.00</vTroco>
      </pgto>
      <infAdic>
         <obsFisco xCampo="04.04.05.04">
            <xTexto>Comete crime quem sonega</xTexto>
         </obsFisco>
      </infAdic>
   </infCFe>
   <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
      <SignedInfo>
         <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
         <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
         <Reference URI="#CFe35190421029223000151590001665441204767790071">
            <Transforms>
               <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
               <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
            </Transforms>
            <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
            <DigestValue>9jMP+hE/hSo+AYgCxuewOnLA5FdsYidYAAkG3NDmkxQ=</DigestValue>
         </Reference>
      </SignedInfo>
      <SignatureValue>b2nB7FTBNSzubhYBqPEBf5VoXh5BsKA/HiYSBB4ohSq8Lv7wPpoQz8VsIQ9harmkCLozPPu88N00oHLYIlgJbwf9Bc70Gz9aTfNtnDqrN/qYJ+w/NhvNabp6XQyx0nnmX2XiSmZ56zJ0nded1J9P5nau/+N5M/OJGlMHQERk+Z+tsYMfElI70i46fDzJB0ncRGHvT8JTPTnr5HsbBniFhad9njkhvanaYAl9NwWgBlkQjXBZ+86to11djS+/yu22TvoNm8gv2QnBjOVAJUC2z/gbfHJVzkRvM4urCjqMNpibn127Eyj6h1aiSnvmBKESEBXq9JZWKyyIwE7Y1gV8aw==</SignatureValue>
      <KeyInfo>
         <X509Data>
            <X509Certificate>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</X509Certificate>
         </X509Data>
      </KeyInfo>
   </Signature>
</CFe>

推荐答案

欢迎使用 stackoverflow!使用迭代器只给你第一个子元素.我相信您需要使用 XmlNode.SelectNodes 方法.修改您的代码如下:

Welcome to stackoverflow! Using iterator gives you only first child element. I believe you need to use XmlNode.SelectNodes Method. Modify your code as follows:

foreach (XmlNode node in infcfe.SelectNodes("det"))
{
    //...
}

这篇关于以大量销售迭代 XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆