2016-04-13 1 views
-1

Das folgende analysiert die Datei data.xml (siehe Beispiel unten). Ich kann den Körperwert gut ziehen, aber ich habe einige Probleme mit dem Empfängerfeld. Ich habe andere Kindelemente durchlaufen, bevor ich denselben Code benutze, aber ich bin mir nicht sicher, was ich hier falsch mache.Mit C# extrahieren Kind <string> Wert von XML-Element

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 Datei:

<?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> 

Danke, Greg

Antwort

0

Dieser Code funktioniert für mich, wenn Sie Ihre XML korrigieren. Sie haben ein offenes <Message>-Tag und kein schließendes Tag ganz unten.

Was bekommen Sie in Ihrem Debugger. Ich bekomme diese:

enter image description here

+0

Ich glaube, ich meine "Rookie" Fehler gefunden. Meine XML-Beispieldatei war nur ein kleiner Teil der Hauptdatei, daher wurde das extra öffnende Nachrichten-Tag versehentlich kopiert. Einige "Receipents" -Elemente waren null, für die ich nicht getestet habe. Nach dem Hinzufügen einer Validierung ging mein Fehler weg. Entschuldigung für den Fehlalarm hier. : | Danke für Ihre Hilfe. – CaptainChaos

Verwandte Themen