0

この質問は無視してください。問題は、メソッドに入るデータにあり、質問で書いたコード/xmlにはありませんでした。質問を削除しますが、すでに回答があります。

エバリュエーターに対してXPathクエリをテストし、期待どおりの結果が得られたXMLがいくつかありますが、コードが同じ結果に到達しないようです。

これが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>

custom-table/select-field[@name="StatusQ3MAP"]私のXPathは、XML内の適切なselect-field要素を取得するように見えます。

ただし、機能していないように見える私の方法は次のとおりです。

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 に答える