2012-04-08 7 views
0

я имею XML-файлЧтение несколько значений из XML в C#

<Actual-External-Terminals> 
    <Actual-External-Terminal> 
     <Party-Id value="EXTRA:77440" /> 
     <Name value="77440" /> 
     <Dial-String value="77440" /> 
     <IP-ISDN-SIP value="IP" /> 
     <Total-Connection-Time value="0s" /> 
     <Failing-Attempts value="0" /> 
     <Last-Failure-Cause value="N/A" /> 
     <List-of-Connection-Records> 
     <Connection Call-Rate="768" Call-Type="Video" ConnectionTime="" Dialin-Dialout="Dial-in" Disconnection-Time="2012-02-16T13:33:32Z" Over-GW-port-limit="false" Over-MCU-port-limit="false" Reason-Disconnection="Normal" /> 
     </List-of-Connection-Records> 
    </Actual-External-Terminal> 

В приведенных выше XML я хочу, чтобы получить все значения соединительной секции, пожалуйста, помогите мне спасибо не может использовать Linq для XML потому что его .NET Framework 2.0 и настольных приложений

с уважением Wasif

+0

google C# xpath –

ответ

1

System.Xml - это способ. В следующем порядке:

using System.Xml; 
// Name space & class declarations... 
static void ReadXml(string filePath) 
     { 
      //These would be kept in a settings file but constants for this example 
      const string CONNECTION_LISTING_NODE_NAME = "List-of-Connection-Records"; 
      const string CONNECTION_NODE_NAME = "Connection"; 
      const string CALL_RATE_ATTRIBUTE_NAME = "Call-Rate"; 

      //Load xml 
      var doc = new XmlDocument(); 
      doc.Load(filePath); 
      var root = doc.FirstChild; 
      var connectionRecordLists = doc.SelectNodes(String.Format("//{0}",CONNECTION_LISTING_NODE_NAME)); 
      if (connectionRecordLists == null) return; 
      for (var i = 0; i < connectionRecordLists.Count; i++) 
      { 
       var connections = connectionRecordLists[i].SelectNodes(CONNECTION_NODE_NAME); 
       if (connections == null) continue; 
       for (var j = 0; j < connections.Count; j++) 
       { 
        if (connections[j].Attributes != null 
         && connections[j].Attributes[CALL_RATE_ATTRIBUTE_NAME] != null) 
        { 
         Console.WriteLine(connections[j].Attributes[CALL_RATE_ATTRIBUTE_NAME].Value); 
        } 

       } 
      } 
     } 
+0

Спасибо GrantVS, это много благодаря работе :-) – Wasif

Смежные вопросы