C#从字符串中删除xml

时间:2015-07-19 09:45:54

标签: c# json xamarin

我的xamarin移动应用程序使用soap服务,当我发出登录请求时,返回的响应同时包含Json和xml。我只对json字符串感兴趣。任何人都可以告诉我解析以下响应的方法。

[{"Result":"true","HasError":false,"UserMsg":null,"ErrorMsg":null,"TransporterID":"327f6da2-d797-e311-8a6f-005056a34fa8"}] <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><LoginResponse xmlns="http://tempuri.org/" /></soap:Body></soap:Envelope>

2 个答案:

答案 0 :(得分:0)

String.IndexOf将为您提供xml部分的索引,然后您可以使用String.Substring

string str = @"[{ ""Result"":""true"",""HasError"":false,""UserMsg"":null,""ErrorMsg"":null,""TransporterID"":""327f6da2-d797-e311-8a6f-005056a34fa8""}]
<? xml version = ""1.0"" encoding = ""utf-8"" ?>< soap : Envelope xmlns: soap = ""http://www.w3.org/2003/05/soap-envelope"" xmlns: xsi = ""http://www.w3.org/2001/XMLSchema-instance"" xmlns: xsd = ""http://www.w3.org/2001/XMLSchema"" >< soap:Body >< LoginResponse xmlns = ""http://tempuri.org/"" /></ soap:Body ></ soap:Envelope >";

string json = str.Substring(0, str.IndexOf("<? xml")); 

Console.WriteLine(json); // [{ "Result":"true","HasError":false,"UserMsg":D":"327f6da2-d797-e311-8a6f-005056a34fa8"}]

答案 1 :(得分:0)

您可以使用Substring方法,如下所示:

string response = "<<The response you got>>";
string jsonResponse = response.Substring(0, response.IndexOf("<?"));

0是起始索引(何时开始提取子字符串),IndexOf将返回<?的索引,该索引是响应的XML部分的开头。您可以阅读Substring方法here

因此,您已从整个字符串中筛选出JSON响应。 (有关如何解析JSON数据的方法,请检查this answer)。