使用C#extract child<;字符串>;来自XML元素的值
下面解析data.xml文件(参见下面的示例)。我可以很好地提取body值,但是我在recipient字段上遇到了一些问题。在使用相同的代码之前,我已经循环了其他子元素,但不确定我在这里做错了什么使用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
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”元素为空,我没有测试它。添加一些验证后,我的错误消失了。对不起,这里出现了误报谢谢你的帮助。