簡體   English   中英

使用XMLreader讀取子節點

[英]Read child node with XMLreader

我有這個XML文件:

   <?xml version="1.0" encoding="UTF-8"?>
   <cteProc xmlns="http://www.portalfiscal.inf.br/cte" versao="1.04">
   <CTe>
   <emit>
       <xFant>DOW</xFant>
       <CNPJ>456789</CNPJ>
   </emit>
   <rem>
      <CNPJ>777777</CNPJ>
      <nCFOP>7101</nCFOP>
   </rem>
   </CTe>
   <protCTe versao="1.04">
   </cteProc>

要讀取此文件,請使用以下C#代碼段:

    string 
    XmlTextReader reader = new XmlTextReader(@"C:\Conhecimento\158_v01.04-rocCTe.xml");
        XmlNodeType type;
        while (reader.Read())
        {
            type = reader.NodeType;
            if (type == XmlNodeType.Element)
            {
                if (reader.Name == "xFant")
                {  reader.Read(); XFant = reader.Value; textBox1.Text = XFant;} 

            if (reader.Name == "nCFOP")
                {  reader.Read(); nCFOP = reader.Value; textBox2.Text = nCFOP;} 
            }
        }

該代碼可以很好地工作,但是對於子節點<CNPJ>無效; 它只讀取第一個。 如何編寫此代碼以讀取后代? 我已經嘗試過rem.CNPJ類的rem.CNPJ

從其他問題我看到此代碼:

字符串CNPJ2,CNPJ3;

      XNamespace ns = "http://www.portalfiscal.inf.br/cte";
        var todas = from ide in XElement.Load(@"C:\136_v01.04.xml").Descendants(ns + "ide")

                    select new { CNPJ1 = (string)ide.Element(ns + "CNPJ") };

        var emit  = from ide1 in XElement.Load(@"C:\136_v01.04.xml").Descendants(ns + "emit")

                    select new { CNPJ2 = (string)ide1.Element(ns + "CNPJ") };

但是如何將“ toda”分配給像int CNPJ這樣的單個變量

如果您使用XDocument讀取xml

XDocument XMLDoc = XDocument.Load([path to xml file]);

您有一個Descendants(XName) ,可用來獲取您要訪問的節點。

XElement element = XMLDoc.Descendants("CNPJ").FirstOrDefault();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM