<?xml version="1.0" encoding="utf-8"?><Envelope xmlns="http://www.intentia.com/MBM" xmlns:env="http://www.intentia.com/MBM_Envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.intentia.com/MBM ">  
  <Header> 
    <env:delivery> 
      <env:to> 
        <env:address>002176117</env:address> 
      </env:to>  
      <env:from> 
        <env:address>PRDN</env:address> 
      </env:from>  
      <env:reliability> 
        <env:sendReceiptTo/>  
        <env:receiptRequiredBy/> 
      </env:reliability> 
    </env:delivery>  
    <env:properties> 
      <env:identity>8cc83f91-6292-4b09-b8a3-ab8340d428e6</env:identity>  
      <env:sentAt>2014-05-06T03:23:10+01:00</env:sentAt>  
      <env:expiresAt/>  
      <env:topic>http://www.intentia.com/MBM/</env:topic> 
    </env:properties>  
    <env:manifest> 
      <env:reference uri="#850@4010"> 
        <env:description>Doc Name Descr</env:description> 
      </env:reference> 
    </env:manifest>  
    <env:process> 
      <env:type>0</env:type>  
      <env:instance/>  
      <env:handle/> 
    </env:process> 
  </Header>  
  <Body>
    <X12850>
      <ST>
        <e01_0143>850</e01_0143>
        <e02_0329>0001</e02_0329>
      </ST>
      <BEG>
        <e01_0353>00</e01_0353>
        <e02_0092>NE</e02_0092>
        <e03_0324>5050820</e03_0324>
        <e05_0373>20140506</e05_0373>
      </BEG>
      <CUR>
        <e01_0098>BY</e01_0098>
        <e02_0100>USD</e02_0100>
      </CUR>
      <FOB>
        <e01_0146>PU</e01_0146>
        <e02_0309>WH</e02_0309>
        <e03_0352>DE1</e03_0352>
      </FOB>
      <DTM>
        <e01_0374>002</e01_0374>
        <e02_0373>20140506</e02_0373>
      </DTM>
      <TD5>
        <e01_0133>B</e01_0133>
        <e04_0091>A</e04_0091>
        <e05_0387>Z14 FEDEX INTL ECONOMY - EX</e05_0387>
      </TD5>
      <TD4>
        <e01_0152>ZZZ</e01_0152>
        <e04_0352>200189</e04_0352>
      </TD4>
      <LOOP_N1_g005>
        <N1>
          <e01_0098>BY</e01_0098>
          <e03_0066>ZZ</e03_0066>
          <e04_0067>1202DE1</e04_0067>
        </N1>
      </LOOP_N1_g005>
      <LOOP_N1_g005>
        <N1>
          <e01_0098>PR</e01_0098>
          <e03_0066>ZZ</e03_0066>
          <e04_0067>DE1</e04_0067>
        </N1>
      </LOOP_N1_g005>
      <LOOP_N1_g005>
        <N1>
          <e01_0098>SU</e01_0098>
          <e03_0066>ZZ</e03_0066>
          <e04_0067>VIC082</e04_0067>
        </N1>
      </LOOP_N1_g005>
      <LOOP_N1_g005>
        <N1>
          <e01_0098>SN</e01_0098>
          <e03_0066>ZZ</e03_0066>
          <e04_0067>NBR</e04_0067>
        </N1>
      </LOOP_N1_g005>
      <LOOP_PO1_g011>
        <PO1>
          <e01_0350>1</e01_0350>
          <e02_0330>45</e02_0330>
          <e03_0355>EA</e03_0355>
          <e04_0212>13.2800</e04_0212>
          <e05_0639>PE</e05_0639>
          <e06_0235>VN</e06_0235>
          <e07_0234>G120077LA1</e07_0234>
          <e08_0235>IN</e08_0235>
          <e09_0234>G00770323000001</e09_0234>
          <e12_0235>KL</e12_0235>
          <e13_0234>C</e13_0234>
        </PO1>
        <LOOP_PID_g013>
          <PID>
            <e01_0349>F</e01_0349>
            <e05_0352>12 GSK 77 FS-FDA-A</e05_0352>
          </PID>
        </LOOP_PID_g013>
        <DTM>
          <e01_0374>002</e01_0374>
          <e02_0373>20140506</e02_0373>
        </DTM>
      </LOOP_PO1_g011>
      <LOOP_PO1_g011>
        <PO1>
          <e01_0350>2</e01_0350>
          <e02_0330>10</e02_0330>
          <e03_0355>EA</e03_0355>
          <e04_0212>53.4600</e04_0212>
          <e05_0639>PE</e05_0639>
          <e06_0235>VN</e06_0235>
          <e07_0234>G140077LA1</e07_0234>
          <e08_0235>IN</e08_0235>
          <e09_0234>G00770355000001</e09_0234>
          <e12_0235>KL</e12_0235>
          <e13_0234>C</e13_0234>
        </PO1>
        <LOOP_PID_g013>
          <PID>
            <e01_0349>F</e01_0349>
            <e05_0352>14 GSK 77 FS-A</e05_0352>
          </PID>
        </LOOP_PID_g013>
        <DTM>
          <e01_0374>002</e01_0374>
          <e02_0373>20140506</e02_0373>
        </DTM>
      </LOOP_PO1_g011>
      <LOOP_CTT_g031>
        <CTT>
          <e01_0354>2</e01_0354>
        </CTT>
      </LOOP_CTT_g031>
      <SE>
        <e01_0096>1</e01_0096>
        <e02_0329>0001</e02_0329>
      </SE>
    </X12850>
  </Body> 
</Envelope>格式化一下

解决方案 »

  1.   

    基本的两种方法:
    1.DOM,一次性读入整个XML文档,构建整个文档的结构树
    2.SAX,局部解析,边读入边解析建议使用dom4j进行XML解析。
      

  2.   

    使用linq  to sql  会是相当方便快捷的。
    http://blog.csdn.net/duanzi_peng/article/details/24018431
      

  3.   

    linq to xml
    http://msdn.microsoft.com/zh-cn/library/bb387098.aspx
      

  4.   

    Xml to Object的映射我一般使用XmlSerializer
    http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer(v=vs.110).aspx如果只是取得某个字段的值,使用linq to Xml 就是XDocument
    http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument(v=vs.110).aspx
      

  5.   

    你用  DataSet ds = new DataSet();
                ds.ReadXml("test.xml"); 你看一下ds中的内容,对应取出你要的值,很容易    //ST
                string s = ds.Tables["st"].Rows[0][0].ToString();  //850
                string s1 = ds.Tables["st"].Rows[0][1].ToString();  //0001            //BEG
                string s2 = ds.Tables["BEG"].Rows[0][0].ToString();  //00
                string s3 = ds.Tables["BEG"].Rows[0][1].ToString();  //Ne
                string s4 = ds.Tables["BEG"].Rows[0][2].ToString();  //5050820
                string s5 = ds.Tables["BEG"].Rows[0][3].ToString();  //20140506
    …………。
      

  6.   

    Linq to XML很快  也很好用
      

  7.   


    循环部分如何处理啊?      <LOOP_N1_g005>
            <N1>
              <e01_0098>SU</e01_0098>
              <e03_0066>ZZ</e03_0066>
              <e04_0067>VIC082</e04_0067>
            </N1>
          </LOOP_N1_g005>
          <LOOP_N1_g005>
            <N1>
              <e01_0098>SN</e01_0098>
              <e03_0066>ZZ</e03_0066>
              <e04_0067>NBR</e04_0067>
            </N1>
          </LOOP_N1_g005>
      

  8.   


    循环部分如何处理啊?      <LOOP_N1_g005>
            <N1>
              <e01_0098>SU</e01_0098>
              <e03_0066>ZZ</e03_0066>
              <e04_0067>VIC082</e04_0067>
            </N1>
          </LOOP_N1_g005>
          <LOOP_N1_g005>
            <N1>
              <e01_0098>SN</e01_0098>
              <e03_0066>ZZ</e03_0066>
              <e04_0067>NBR</e04_0067>
            </N1>
          </LOOP_N1_g005>
      

      for (int i = 0; i < ds.Tables["N1"].Rows.Count; i++)
                {                string s11 = ds.Tables["N1"].Rows[i][0].ToString(); 
                    string s12 = ds.Tables["N1"].Rows[i][1].ToString(); 
                    string s13 = ds.Tables["N1"].Rows[i][2].ToString(); 
                    
                }