2016-12-22 4 views
0

"sample input"のような文字列を入力パラメータとして受け付けるAPIを作成中です。このAPIは、私たちが、私はその意志<lab uri="https://thirdpartyhost/api/dept/1">からURIを取得する必要がありますAPIからXMLレスポンスのuriを抽出するには

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

のようなXMLを返す

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

などの入力として得た同じ値を渡し、他のサードパーティのAPIを呼び出すべきです私たちに必要な応答を与えてください。

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を抽出する方法がわかりません。次のようにすべてのヘルプは大幅にこの

答えて

1

AngleSharpを使用して評価されて、あなたが行うことができます:あなたが使用していない名前空間を削除します置き換える

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は次のとおりです。

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

これを試してみてくださいあなたのresponseString。

関連する問題