![](/img/trans.png)
[英]UFT API Test How can I extract and save XLS values from the XML response?
[英]How do I extract an uri out of a XML response from an API
我目前正在創建一個API,該API接受諸如“ sample input”之類的字符串作為輸入參數。 該API應該調用其他第三方API,並傳遞與輸入類似的值
https://thirdpartyhost/api/dept?name=sample+input
返回一個像
<lab:labs>
<lab uri="https://thirdpartyhost/api/dept/1">
<name>sample input</name></lab>
</lab:labs>
我將需要從<lab uri="https://thirdpartyhost/api/dept/1">
檢索uri,這將給我們所需的響應。
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;
}
}
我不確定如何從API的響應中提取uri。 任何幫助都非常感謝
使用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();
嘗試這個:
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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.