【问题标题】:Extracting a key-value pair from a web service XML response从 Web 服务 XML 响应中提取键值对
【发布时间】:2012-08-21 13:47:20
【问题描述】:

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

我的智能感知没有发现任何有用的东西,我无法弄清楚我做错了什么。

这是代码。 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 服务中创建这样的数组,而不是 select 一个 from Web 服务作为我想做。

【问题讨论】:

  • 在c#中它们通常被称为字典。你试过FeatureSet["FileUploadUrl"]吗?

标签: c# .net arrays web-services


【解决方案1】:

试试这样的:

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

【讨论】:

  • 嗯,我喜欢通过“FileUploadUrl”进行搜索的想法,但是这段代码不起作用。FeatureSet 之后的键对我不起作用,并且我得到了对象和项目的错误。但我仍在解决它。如果我弄清楚了,我会发布而没有其他人这样做。
  • 把它分解一下。这不起作用:foreach(serverInfo.FeatureSet.Keys 中的字符串项)因为无法将 MyWorkflow.serverInfo.Feature 转换为字符串。
  • FeatureSet 很可能是一个数组,而不是字典,所以你不能引用它的 Keys 属性——它没有这样的东西。只需遍历 FeatureSet 本身并分别检索每个项目的每个键。
  • 是的,谢谢 Konrad,我确实做到了.. 仍然无法正常工作
  • @user1611224 尝试摆脱ToString(),你正在迭代一个数组,通过调用它,你要求它吐出那个数组的字符串表示,这不是你的东西可以迭代。
【解决方案2】:

如果你使用的是 c# 3.5,那么 linq 中的东西就像

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

【讨论】:

  • 谢谢.. 不幸的是它必须与 .NET 2.0 兼容。我没有得到“First”或“Key”(我得到“Keys”)作为选项
【解决方案3】:

问题出在数据类型上。将代码更改为此解决了问题,尽管方式很混乱。我认为它与类型及其定义方式有关......作为字典或数组,但它与我想象的有点不同......

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    相关资源
    最近更新 更多