簡體   English   中英

如何從API的XML響應中提取uri

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM