C# 连接XML节点数据

C# 连接XML节点数据,c#,.net,xml,C#,.net,Xml,我有这样的XML <BoxResult> <DocumentType>BCN</DocumentType> <DocumentID>BCN_20131113_1197005001#854@11XEZPADAHANDELC</DocumentID> <DocumentVersion>1</DocumentVersion> <ebXMLMessageId>CENTRAL_MATCHING</ebXM

我有这样的XML

<BoxResult>
<DocumentType>BCN</DocumentType>
<DocumentID>BCN_20131113_1197005001#854@11XEZPADAHANDELC</DocumentID>
<DocumentVersion>1</DocumentVersion>
<ebXMLMessageId>CENTRAL_MATCHING</ebXMLMessageId>
<State>FAILED</State>
<Timestamp>2013-11-13T13:02:57</Timestamp>
<Reason>
    <ReasonCode>efet:IDNotFound</ReasonCode>
    <ReasonText>Unknown Sender</ReasonText>
</Reason>
<Reason>
    <ReasonCode>efet:IDNotFound</ReasonCode>
    <ReasonText>Unknown Receiver</ReasonText>
</Reason>
</BoxResult>
我从这个代码中得到的输出是未知的发送者;未知发件人

它没有显示未知接收器


请提供建议,您的帮助将非常有用

您总是使用同一个节点来检索数据。始终调用
xmlDoc
(即第一个
节点),而不是每个目标节点

XmlNodeList ReasonNodeList = xmlDoc.SelectNodes("/BoxResult/Reason/ReasonText");  //change here            
foreach (XmlNode xmln in ReasonNodeList)
{
     ReasonText = ReasonText + ";" + xmln.InnerXml.ToString(); //change here
}
if (ReasonText != " ")
{
     ReasonText = ReasonText.Substring(1);
}

您正在迭代
节点,每次都选择文档中的第一个
/BoxResult/Reason/ReasonText
节点(请注意,您没有在任何地方使用
xmln
变量)

顺便说一下,这里有一个较短的版本(替换整个代码块):

ReasonText+=String.Join(“;”,
xmlDoc.SelectNodes(“/BoxResult/Reason/ReasonText”)
.Cast()
.选择(n=>n.InnerText));

谢谢安德烈五世。我只需要ReasonText标记的值。@VikasKunte,我也更新了xPath。别忘了它周围的引号。
XmlNodeList ReasonNodeList = xmlDoc.SelectNodes("/BoxResult/Reason/ReasonText");  //change here            
foreach (XmlNode xmln in ReasonNodeList)
{
     ReasonText = ReasonText + ";" + xmln.InnerXml.ToString(); //change here
}
if (ReasonText != " ")
{
     ReasonText = ReasonText.Substring(1);
}
ReasonText += String.Join(";",
                          xmlDoc.SelectNodes("/BoxResult/Reason/ReasonText")
                                .Cast<XmlNode>()
                                .Select(n => n.InnerText));