2016-12-22 4 views
0

В настоящее время я создаю API, который принимает строку типа «образец ввода» в качестве входного параметра. Этот API должен быть вызовом другой третьей стороной API проходящее то же значение, которое мы получили в качестве входных данных, какКак извлечь uri из ответа XML из API

https://thirdpartyhost/api/dept?name=sample+input 

который возвращает XML-как

<lab:labs> 
<lab uri="https://thirdpartyhost/api/dept/1"> 
<name>sample input</name></lab> 
</lab:labs> 

мне нужно будет получить Ури от <lab uri="https://thirdpartyhost/api/dept/1">, который будет дать нам требуемый ответ.

public IHttpActionResult Get(string DeptName) 
    { 
     using (var client = new HttpClient()) 
     { 
      string BaseURL = ConfigurationManager.AppSettings["BaseURL"]; 
      Uri uri = new Uri(BaseURL); 
      client.BaseAddress = uri; 
      client.DefaultRequestHeaders.Accept.Clear(); 
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml")); 
      var response = client.GetAsync("api/v2/dept?name=" +LabName).Result; 
      if (response.IsSuccessStatusCode) 
      { 
       string responseString = response.Content.ReadAsStringAsync().Result; 
      } 
     } 

Я не уверен, как извлечь uri из ответа API. Любая помощь очень ценится с этим

ответ

1

Использование AngleSharp, вы можете сделать следующее:

var xmlString = "<lab:labs><lab uri=\"https://thirdpartyhost/api/dept/1\"><name> sample input </name></lab></lab:labs>" 
var parser = new HtmlParser(); 
var parsedXml = parser.Parse(xmlString); 
var extractedUri = parsedXml.QuerySelectorAll("lab").Attr("uri").FirstOrDefault(); 
1

Попробуйте это:

string xmlString = @"<lab:labs> 
    <lab uri=""https://thirdpartyhost//api//dept//1""> 
     <name>sample input</name></lab> 
    </lab:labs>".Replace("lab:labs>", "labs>"); 

XmlDocument doc = new XmlDocument(); 
doc.LoadXml(xmlString); 
XmlNodeList nodes = doc.SelectNodes("labs//lab"); 

if (nodes != null && nodes.Count > 0) 
{ 
    XmlNode node = nodes[0]; 
    if (node.Attributes["uri"] != null) 
    { 
     string uri = node.Attributes["uri"].Value.ToString(); 
    } 
} 

ЗАМЕНИТЬ будет удалить пространство имен вы не используете и xmlString является ваш responseString.

Смежные вопросы