2016-04-13 6 views
-1

以下は、data.xmlファイルを解析します(下記のサンプルを参照)。私は体の価値を引き出すことができますが、私は受取人のフィールドにいくつかの問題があります。私はこの同じコードを使用する前に他の子要素をループしましたが、ここで何が間違っているのか分かりません。C#で子を抽出する<string> XML要素の値

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のファイル:

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

はあなたのXMLを修正する場合は、このコードは私の作品、 グレッグ

答えて

0

、ありがとうございました。開かれた<Message>タグがあり、最下部に終了タグはありません。

デバッガではどうなっていますか?私はこれを取得:

enter image description here

+0

私は私が私の「ルーキー」間違いを見つけたと思います。私のサンプルXMLは、メインファイルのほんの一部に過ぎませんでした。私は間違ってコピーした余分な開始メッセージタグです。いくつかの "受信者"要素はnullでしたが、これは私がテストしていなかったものです。いくつかの検証を追加した後、私のエラーは消え去った。ここで誤った警報をおかけして申し訳ありません。 :|あなたの助けをありがとう。 – CaptainChaos

関連する問題