0

请忽略这个问题。问题在于数据进入方法,而不是我在问题中编写的任何代码/xml。我会删除这个问题,但它已经有了答案。

我有一些 XML,我针对评估程序测试了 XPath 查询并得到了预期的结果,但我的代码似乎无法达到相同的结果。

这是 XML 的一个片段

<custom-table security="seeown" allownotify="false">
  <reports show="all">
    <report aspurl="../Reports/" label="Buy Sheet" security="moderator"/>
  </reports>
  <select-field name="StatusQ3MAP" eval="false">
    <option value="Accept" label="Accept"/>
    <option value="Decline" label="Decline"/>
  </select-field>
  <select-field name="MerchantStatus" eval="false">
    <option value="Review 1" label="Review 1"/>
    <option value="Review 2" label="Review 2"/>
  </select-field>
</custom-table>

我的 XPath 看起来像是custom-table/select-field[@name="StatusQ3MAP"]在 XML 中为我提供了适当的选择字段元素。

但是,我似乎不起作用的方法是:

public static List<string> GetListItems(string fieldName, XPathNavigator nav)
{
    var list = new List<string>();

    var nodes = nav.Select(string.Format("/custom-table/select-field[@name = '{0}']", fieldName));

    foreach (XPathNavigator item in nodes)
        list.Add(item.Value);

    return list;
}

假设 fieldName 为“StatusQ3MAP”,节点中似乎没有任何内容,因此在列表中没有返回任何结果。

我究竟做错了什么?

4

2 回答 2

0

尝试这个:

XPathNodeIterator nodes = nav.Select(string.Format("/custom-table/select-field[@name = '{0}']", fieldName));

foreach (XPathIterator item in nodes)
        list.Add(item.Value);

查看此链接,它可能会为您清除一些东西。

于 2013-01-10T18:50:11.587 回答
0

XPathNavigator.Select期望XPathExpression一个. 将您的代码更改为

XPathExpression expr = nav.Compile(string.Format("custom-table/select-field[@name= '{0}']",fieldName));
XPathNodeIterator iter = nav.Select(expr);
while(iter.MoveNext())
{
  list.Add(iter.Current);
}
于 2013-01-10T18:29:49.440 回答