Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#extract child<;字符串>;来自XML元素的值_C#_Xml - Fatal编程技术网

使用C#extract child<;字符串>;来自XML元素的值

使用C#extract child<;字符串>;来自XML元素的值,c#,xml,C#,Xml,下面解析data.xml文件(参见下面的示例)。我可以很好地提取body值,但是我在recipient字段上遇到了一些问题。在使用相同的代码之前,我已经循环了其他子元素,但不确定我在这里做错了什么 using System; using System.IO; using System.Text; using System.Text.RegularExpressions; using System.Xml.Linq; namespace Messa

下面解析data.xml文件(参见下面的示例)。我可以很好地提取body值,但是我在recipient字段上遇到了一些问题。在使用相同的代码之前,我已经循环了其他子元素,但不确定我在这里做错了什么

    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>

5555555555
废话废话
假的
真的
130979714416748889
5555555555
雅巴大巴道
假的
真的
130979673444601802
谢谢,,
Greg

如果您更正XML,则此代码对我有效。在最底部有一个打开的
标记,没有关闭标记

你在调试器中得到了什么。我明白了:

我想我发现了我的“新手”错误。我的示例XML只是主文件的一小部分,因此我无意中复制了额外的打开消息标记。一些“recepients”元素为空,我没有测试它。添加一些验证后,我的错误消失了。对不起,这里出现了误报谢谢你的帮助。