从Web服务XML响应中提取键值对

时间:2012-08-21 13:47:20

标签: c# .net arrays web-services

我正在使用Visual Studio 2010中的C#和.NET 2.0框架。 我正在尝试提取由Web服务返回的URL。 此URL在包含键和值的要素数组中返回。 (我认为这与我在学校学到的相似,称为哈希表)。

我的intellisense没有找到任何有用的东西,我无法弄清楚我做错了什么。

这是代码。 serverInfo.FeatureSet[]中的内容是什么?

public string wfl_reqURL(string username, string password)
{
    MyWorkflow.ServerInfo serverInfo = new MyWorkflow.ServerInfo();
    myURL = serverInfo.FeatureSet[];
}

这就是它在WSDL中的描述。 FeatureSet作为带有字符串键和字符串值的数组返回:

<ServerInfo>
  <FeatureSet>
    <Feature>
      <Key>FileUploadUrl</Key>
      <Value>http://localhost/transferindex.php</Value>
    </Feature>
  </FeatureSet>
</ServerInfo>

我是否提供了有关我的问题的足够详细信息?我发现的大多数信息似乎都是关于如何在Web服务中创建这样的数组,而不是选择从 Web服务中的我想做。

3 个答案:

答案 0 :(得分:1)

如果你正在使用c#3.5那么就像linq中的那样

myURL = serverInfo.FeatureSet.First(o=>o.Key == "FileUploadUrl").Value

答案 1 :(得分:1)

尝试这样的事情:

object neededItem = null;
foreach (string item in serverInfo.FeatureSet.Keys)
{
    if (item == "FileUploadUrl")
    {
        neededItem = serverInfo.FeatureSet[item];
        break;
    }
}
if (neededItem != null)
{
    //Do something
}

答案 2 :(得分:0)

问题出在数据类型中。将代码更改为此解决了问题,尽管是以混乱的方式。我认为这与类型及其定义方式有关...无论是字典还是数组,但它与我想的有点不同......

foreach( MyWorkFlow.Feature feature in serverInfo.FeatureSet) {
    if (feature.Key.ToString() == "FileUploadUrl") {
        string myURL = feature.Value;
        Console.WriteLine(myURL);
    }