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