я получаю своеобразный ответ назад от WebService:Синтаксический необычный XML с Linq
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetLemonadeResponse xmlns="http://microsoft.com/webservices/">
<GetLemonadeResult><Response><Status>Error</Status><Message>Could not find the Lemonade for this State/Lemon</Message><FileNumber /></Response></GetLemonadeResult>
</GetLemonadeResponse>
</soap:Body>
</soap:Envelope>
2 вопроса:
1) Я не знаю, почему содержание GetLemonadeResult имеет отклоняющееся содержание (например, "& lt; ").
Я мигрируют байты строки таким образом:
WebClientEx client = new WebClientEx();
client.Headers.Add(HttpRequestHeader.ContentType, "text/xml; charset=utf-8");
client.Encoding = Encoding.UTF8;
byte[] result = client.UploadData(_baseUri.ToString(), data);
client.Encoding.GetBytes(xml));
string resultString = client.Encoding.GetString(result);
(WebClientEx производный от WebClient с дополнительным свойством Timeout).
Я думаю, что если бы я выбрал неправильную кодировку, то внешняя часть ответа будет искажена одинаково.
У веб-службы есть ошибки?
2) Почему, когда я пытаюсь захватить «GetLemonadeResult», используя Linq to XML, он ничего не может вытащить?
var xdoc = XDocument.Parse(response); // returns the XML posted above
var responseAsXML = xdoc.Descendants("GetLemonadeResult"); // gets nothing
я бы не догадался, что я нужен пространство имен, чтобы поймать потомков, так как XML GetLemonadeResult тег не имеет Предварение «тег:».
Я не вижу «GetClosingProtectionLetterResult» в вашем примере ответ? – cgatian
'GetClosingProtectionLetterResult' не существует в примере XML, который вы предоставили. Обновите свой вопрос с помощью XML, который его содержит. –
@cgtian: так много для маскировки, из какой отрасли я родом! Извинения ... – micahhoover