À l'aide de C# pour analyser une Réponse SOAP
Je suis en train d'obtenir les valeurs de faultcode, faultstring, et OrderNumber du SAVON ci-dessous
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
<faultcode>1234</faultcode>
<faultstring>SaveOrder:SetrsOrderMain:Cannot change OrderDate if GLPeriod is closed, new OrderDate is 3/2/2010:Ln:1053</faultstring>
<detail>
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body UserGUID="test">
<m:SaveOrder xmlns:m="http://www.test.com/software/schema/" UserGUID="test">
<Order OrderNumber="1234-1234-123" Caller="" OrderStatus="A" xmlns="http://www.test.com/software/schema/">
Voici mon code en C#
XDocument doc = XDocument.Load(HttpContext.Current.Server.MapPath("XMLexample.xml"));
var errorDetail = new EcourierErrorDetail
{
FaultCode = from fc in doc.Descendants("faultcode")
select fc.Value,
FaultString = from fs in c.Descendants("faultstring")
select fs.Value,
OrderNumber = from o in
doc.Descendants("detail").Elements("Order").Attributes("OrderNumber")
select o.Value
};
return errorDetail;
Je suis en mesure d'obtenir les valeurs pour les deux faultcode et faultstring mais pas le OrderNumber. Je suis "l'Énumération donné aucun résultat." Quelqu'un peut-il aider? Merci.
OriginalL'auteur Gavin | 2010-05-20
Vous devez vous connecter pour publier un commentaire.
Oui, vous êtes ignorant l'espace de noms XML lors de la sélection:
La
<Order>
balise est à l'intérieur de la<m:SaveOrder>
balise qui utilise l'espace de noms XML préfixé par lem:
préfixe.Aussi, vous essayez de sélectionner le "détail" et ensuite vous sautez vers le "bon de Commande" node directement (à l'aide de
.Elements()
) - vous avez manqué la<m:SaveOrder>
nœud entre les deux.Vous avez besoin de prendre cela en compte lors de la sélection:
Ne fait que vous donner un résultat??
OriginalL'auteur marc_s