2016-04-13 14 views
-1

Aşağıdaki, data.xml dosyasını ayrıştırır (aşağıdaki örneğe bakın). Gövde değerini iyi çekebilirim ama alıcı alanla ilgili bir sorun yaşıyorum. Aynı kodu kullanmadan önce diğer alt öğelerin içinden geçtim ama burada ne yapıyorum emin değilim.C# özü ile <string> değeri XML öğesinden

using System; 
    using System.IO; 
    using System.Text; 
    using System.Text.RegularExpressions; 
    using System.Xml.Linq; 

    namespace MessagesRestore 
    { 
     public class ParseXml 
     { 
      public static void ExtractMessages() 
      { 
       string recepients = ""; 
       string body = ""; 

       foreach (XElement level1Element in XElement.Load(@"Data.xml").Elements("Message")) 
       { 
        body = level1Element.Element("Body").Value; //Works 

        foreach (XElement level2Element in level1Element.Elements("Recepients")) 
        { 
         recepients = level2Element.Element("string").Value; //Fails 
        } 
       } 
      } 
     } 
    } 

data.xml dosyası: Eğer XML düzeltmek eğer

<?xml version="1.0" encoding="utf-8"?> 
<ArrayOfMessage> 
    <Message> 
    <Recepients> 
     <string>5555555555</string> 
    </Recepients> 
    <Body>blah blah blah</Body> 
    <IsIncoming>false</IsIncoming> 
    <IsRead>true</IsRead> 
    <Attachments /> 
    <LocalTimestamp>130979714416748889</LocalTimestamp> 
    <Sender /> 
    </Message> 
    <Message> 
    <Recepients> 
     <string>5555555555</string> 
    </Recepients> 
    <Body>yaba daba do</Body> 
    <IsIncoming>false</IsIncoming> 
    <IsRead>true</IsRead> 
    <Attachments /> 
    <LocalTimestamp>130979673444601802</LocalTimestamp> 
    <Sender /> 
    </Message> 
    <Message> 
</ArrayOfMessage> 

Teşekkür ederim, Greg

cevap

0

Bu kod benim için çalışıyor. Açık bir <Message> etiketiniz var ve en alttaki bir kapatma etiketi yok.

Hata ayıklayıcınıza ne yaparsınız? Ben bu olsun:

enter image description here

+0

benim "çaylak" hata buldum. Örnek XML'im ana dosyanın yalnızca küçük bir kısmıydı, dolayısıyla yanlışlıkla kopyaladığım ekstra açılış mesajı. Bazı "reseptörler" unsurları neyi test etmemişti? Doğrulama ekledikten sonra hatam gitti. Burada yanlış alarm için özür dilerim. : | Yardımınız için teşekkürler. – CaptainChaos