当前位置: 代码迷 >> C# >> 求读取xml 节点的步骤
  详细解决方案

求读取xml 节点的步骤

热度:175   发布时间:2016-05-05 02:57:19.0
求读取xml 节点的方法,
以下xml怎样读取所有节点,试很多方法都不行,新手。

<?xml version="1.0" encoding="utf-8"?>
- <Z_READ_PRODUCTION_ORDER_YP124 xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <P_LISTER>test</P_LISTER>
  <IT_AUFNR>
    <connect>     
      <IT_AUFNR>
        <MANDT>800</MANDT>
        <ZNUMB>150819000002</ZNUMB>
        <ZORDER>5</ZORDER>
        <AUFNR></AUFNR>
        <ZNUM></ZNUM>
        <ZSIZE></ZSIZE>
        <ZCOLOR></ZCOLOR>
        <ZQTY></ZQTY>
        <TMATNR>JINSHU/JIEZI</TMATNR>
        <WGBEZ>金屬介子(配件)</WGBEZ>
        <POSI></POSI>
        <CLENTXT></CLENTXT>
      </IT_AUFNR>
      <IT_AUFNR>
        <MANDT>800</MANDT>
        <ZNUMB>150819000002</ZNUMB>
        <ZORDER>6</ZORDER>
        <AUFNR></AUFNR>
        <ZNUM></ZNUM>
        <ZSIZE></ZSIZE>
        <ZCOLOR></ZCOLOR>
        <ZQTY></ZQTY>
        <TMATNR>KI/MB363-K</TMATNR>
        <WGBEZ>圈鉸(裝配)</WGBEZ>
        <POSI></POSI>
        <CLENTXT></CLENTXT>
      </IT_AUFNR>
      <IT_AUFNR>
        <MANDT>800</MANDT>
        <ZNUMB>150819000002</ZNUMB>
        <ZORDER>7</ZORDER>
        <AUFNR></AUFNR>
        <ZNUM></ZNUM>
        <ZSIZE></ZSIZE>
        <ZCOLOR></ZCOLOR>
        <ZQTY></ZQTY>
        <TMATNR>OA/12568</TMATNR>
        <WGBEZ>夾口(燒焊)</WGBEZ>
        <POSI></POSI>
        <CLENTXT></CLENTXT>
      </IT_AUFNR>
      <IT_AUFNR>
        <MANDT>800</MANDT>
        <ZNUMB>150819000002</ZNUMB>
        <ZORDER>8</ZORDER>
        <AUFNR></AUFNR>
        <ZNUM></ZNUM>
        <ZSIZE></ZSIZE>
        <ZCOLOR></ZCOLOR>
        <ZQTY></ZQTY>
        <TMATNR>OBE/02910</TMATNR>
        <WGBEZ>(夾口或鉸鏈)膠螺絲</WGBEZ>
        <POSI></POSI>
        <CLENTXT></CLENTXT>
      </IT_AUFNR>
      <IT_AUFNR>
        <MANDT>800</MANDT>
        <ZNUMB>150819000002</ZNUMB>
        <ZORDER>9</ZORDER>
        <AUFNR></AUFNR>
        <ZNUM></ZNUM>
        <ZSIZE></ZSIZE>
        <ZCOLOR></ZCOLOR>
        <ZQTY></ZQTY>
        <TMATNR>SH/MB-125</TMATNR>
        <WGBEZ>自制鼻樑</WGBEZ>
        <POSI></POSI>
        <CLENTXT></CLENTXT>
      </IT_AUFNR>
      <IT_AUFNR>
        <MANDT>800</MANDT>
        <ZNUMB>150819000002</ZNUMB>
        <ZORDER>10</ZORDER>
        <AUFNR></AUFNR>
        <ZNUM></ZNUM>
        <ZSIZE></ZSIZE>
        <ZCOLOR></ZCOLOR>
        <ZQTY></ZQTY>
        <TMATNR>SH/NK-268</TMATNR>
        <WGBEZ>自制銅芯</WGBEZ>
        <POSI></POSI>
        <CLENTXT></CLENTXT>
      </IT_AUFNR>
    </connect>
  </IT_AUFNR>
  <IT_BASIC>
    <connect>
      <IT_BASIC>
        <MANDT>800</MANDT>
        <ZNUMB>150819000002</ZNUMB>
        <VBELN>AXF00127</VBELN>
        <PROTYPE>A</PROTYPE>
        <CRT_ID>HEIBO</CRT_ID>
        <CRT_DATE>8/19/2015 12:00:00 AM</CRT_DATE>
        <UPD_ID></UPD_ID>
        <UPD_DATE>1/1/0001 12:00:00 AM</UPD_DATE>
      </IT_BASIC>
    </connect>
  </IT_BASIC>
  <IT_MARK>
    <connect>
      <IT_MARK>
        <MANDT>800</MANDT>
        <ZNUMB>150819000002</ZNUMB>
        <ZORDER>1</ZORDER>
        <ZTYPE>MOTHER</ZTYPE>
        <AUFNR>000011228007</AUFNR>
        <MATNR>SH/MB-125</MATNR>
        <ZSIZE>55-15-135</ZSIZE>
        <CLENTXT>11228004</CLENTXT>
      </IT_MARK>
      <IT_MARK>
        <MANDT>800</MANDT>
        <ZNUMB>150819000002</ZNUMB>
        <ZORDER>2</ZORDER>
        <ZTYPE>MOTHER</ZTYPE>
        <AUFNR>000011228008</AUFNR>
        <MATNR>SH/NK-268</MATNR>
        <ZSIZE>55-15-135</ZSIZE>
        <CLENTXT>11228004</CLENTXT>
      </IT_MARK>
    </connect>
  </IT_MARK> 
</Z_READ_PRODUCTION_ORDER_YP124>
------解决思路----------------------
以读取IT_AUFNR下的节点为例,IT_BASIC、IT_MARK类似。

class Program
    {
        static void Main(string[] args)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load("test.xml");

            List<IT_AUFNR> IT_AUFNRList = new List<IT_AUFNR>();
            var IT_AUFNRNodes = xmlDoc.SelectSingleNode("Z_READ_PRODUCTION_ORDER_YP124/IT_AUFNR/connect").ChildNodes;
            foreach (XmlNode node in IT_AUFNRNodes)
            {
                IT_AUFNRList.Add(new IT_AUFNR()
                {
                    MANDT = node.SelectSingleNode("MANDT").InnerText,
                    ZNUMB = node.SelectSingleNode("ZNUMB").InnerText,
                    ZORDER = node.SelectSingleNode("ZORDER").InnerText,
                    AUFNR = node.SelectSingleNode("AUFNR").InnerText,
                    ZNUM = node.SelectSingleNode("ZNUM").InnerText,
                    ZSIZE = node.SelectSingleNode("ZSIZE").InnerText,
                    ZCOLOR = node.SelectSingleNode("ZCOLOR").InnerText,
                    ZQTY = node.SelectSingleNode("ZQTY").InnerText,
                    TMATNR = node.SelectSingleNode("TMATNR").InnerText,
                    WGBEZ = node.SelectSingleNode("WGBEZ").InnerText,
                    POSI = node.SelectSingleNode("POSI").InnerText,
                    CLENTXT = node.SelectSingleNode("CLENTXT").InnerText,
                });
            }
        }
    }

    public class IT_AUFNR
    {
        public string MANDT { get; set; }
        public string ZNUMB { get; set; }
        public string ZORDER { get; set; }
        public string AUFNR { get; set; }
        public string ZNUM { get; set; }
        public string ZSIZE { get; set; }
        public string ZCOLOR { get; set; }
        public string ZQTY { get; set; }
        public string TMATNR { get; set; }
        public string WGBEZ { get; set; }
        public string POSI { get; set; }
        public string CLENTXT { get; set; }
    }


------解决思路----------------------
看起来就是一个主类,包含了几个属性以及三个集合,没什么特殊的,等有空在电脑上用vs写个反序列化
  相关解决方案